Ci-joint dans la foulée, la synthèse additive avec blendmode:='add' :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
 
program PsyntheseAdd;
 
{$FRAME_WIDTH 650}
{$FRAME_HEIGHT 400}
{$FRAME_RATE 32}
{$BACKGROUND $00000}
 
uses
  Flash8;
 
type
 lumiere=class(movieclip)
  private
   Procedure circle(Cx,Cy,Radius:number);
  public
   constructor create(aowner:movieclip;taille,couleur:integer);
 end;
 
 scene=class(movieclip)
  rouge,vert,bleu:lumiere;
  constructor create;
 end;
 
 
constructor scene.create;
begin
 inherited create(_root,'scene',0);
 
 rouge:=lumiere.create(self,250,$0000ff);
 with rouge do
 begin
  _x:=300;
  _y:=150;
 end;
 
 vert:=lumiere.create(self,250,$ff0000);
 with vert do
 begin
  _x:=400;
  _y:=150;
 end;
 
 bleu:=lumiere.create(self,250,$00ff00);
 with bleu do
 begin
  _x:=350;
  _y:=250;
 end;
 
end;
 
constructor lumiere.create(aowner:movieclip;taille,couleur:integer);
begin
 inherited create(aowner,'diapo', aowner.getNextHighestDepth());
 Linestyle(10,clblack);
 beginfill(couleur);
 circle(0,0,taille/2);
 blendmode:='add';
end;
 
Procedure lumiere.circle(Cx,Cy,Radius:number);
var a,b,R: number;
begin
  R:=Radius;
  a:= R * 0.414213562;
  b:= R * 0.707106781;
  moveTo(Cx+R,Cy);
  CurveTo(Cx+ R, Cy+-a, Cx+b,Cy -b);
  CurveTo(Cx+ a,Cy-R,Cx,Cy -r);
  CurveTo(Cx-a,Cy -R,Cx-b,Cy -b);
  CurveTo(Cx-R, Cy-a,Cx-R,Cy);
  CurveTo(Cx-R,Cy+a,Cx-b,Cy+b);
  CurveTo(Cx-a,Cy +R,Cx,Cy+r);
  CurveTo(Cx+a,Cy +R,Cx+b,Cy+b);
  CurveTo(Cx+R,Cy+a,Cx+R,Cy);
end;
 
begin
  scene.create;
end.
Le souci étant que la synthèse de chaque movieclip se fait avec la couleur de l'arrière plan (ou le movie du dessous), il est nécessaire de partir au départ du noir pour le fond pour ne pas modifier la couleur des movieclips situés juste au dessus.

la parade serait de mettre un cache noir sans blendmode de même dimension sous chaque movieclip et d'utiliser ainsi la couleur désirée pour le Background de la scène.

Ce n'est pas très pratique si l'on veut animer les disques de lumière dans un onEnterFrame...

Une idée pour faire mieux ?