Précédent   Forum du club des développeurs et IT Pro > Autres langages > Pascal > Flash Pascal
Flash Pascal Forum d'entraide sur la création de fichiers Flash en Object Pascal
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 08/11/2012, 12h40   #1
Archimède
Membre émérite
 
Avatar de Archimède
 
Homme anthony
Enseignant
Inscription : avril 2005
Messages : 1 026
Détails du profil
Informations personnelles :
Nom : Homme anthony
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : avril 2005
Messages : 1 026
Points : 975
Points : 975
Par défaut Fusion de couches

mon problème est le suivant : pour ma synthèse additive des couleurs, je voudrais faire varier les intensités de couleur de mes spots.
J'ai rajouté un bouton marche-arrêt et un zoom...je voulais avoir quelque chose de plus complet...

Le premier réflexe est de changer la couleur du beginfill() des spots à l'aide de trackbars... Je ne l'ai pas fait puisqu'il est nécessaire de redessiner et ça plombe l'animation. Du coup, j'ai pensé qu'il me fallait changer uniquement le opaquebackground et faire un mask circulaire...

pour me faire comprendre, ci-joint un exemple :


Code :
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
 
program Pspot;
 
{$FRAME_WIDTH 1000}
{$FRAME_HEIGHT 600}
{$BACKGROUND $000000}
 
uses
  Flash8,utrack;
 
 
type
 TTrackbar1=class(TTrackbar)
  procedure onChange;override;
 end;
 
 Tspot=class(movieclip)
  track:TTrackbar1;
  Procedure circle(Cx,Cy,Radius:number);
  constructor create;
 end;
 
 
 
var spot:Tspot;
 
Function RGB(R,V,B:integer):number;
begin
 result:=65536*R+256*V+B;
end;
 
Procedure Tspot.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;
 
constructor Tspot.create;
begin
 inherited create(_root,'spot',0);
 opaquebackground:=clred;
 beginFill(0);
 lineto(400,0);
 lineto(400,400);
 lineto(0,400);
 circle(200,200,150);
 track:=TTrackbar1.create(_root,300,0,255,255,'vertical');
 with track do
 begin
   _x:=600;
   _y:=150;
 end;
 _x:=100;
 _y:=100;
end;
 
procedure TTrackbar1.onChange;
begin
 spot.opaquebackground:=rgb(floor(position),0,0);
end;
 
begin
 spot:=Tspot.create;
end.
+utrack...(rappel)
Code :
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
 
unit UTrackbar;
 
interface
uses Flash8;
 
 
type
 
   TTrackcur=class(MovieClip)
    orientation:string;
    xmouse,ymouse,trackmin,trackmax:number;
    xcur,ycur:Integer;
    downcur:Boolean;
    Procedure circle(Cx,Cy,Radius:number);
    constructor Create(AOWNER:Movieclip;trmin,trmax:number);
    procedure onPress;Override;
    procedure onEnterFrame;override;
    procedure onMouseUp;override;
   end;
 
   TTrackbar=class(MovieClip)
   private
    w,h:number;
    state:string;
    cur: TTrackcur;
    procedure Roundrect(x,y,w,h,radius:number);
    procedure DrawTrackbar(Width,Height:number);
 
   public
    position:number;
    procedure onChange; virtual;
    constructor Create(AOWNER:Movieclip;FTaille,trmin,trmax,posi:number;Kind:string);
   end;
 
implementation
 
 
constructor TTrackcur.create(AOWNER:Movieclip;trmin,trmax:number);
 var matrix: Flash8.Matrix;
begin
  inherited Create(AOWNER,'cur',AOWNER.getNextHighestDepth);
  matrix := Flash8.Matrix.Create();
  matrix.createBox(1,1,0,10,14);
  linestyle(1,$87B6B7);
  beginGradientFill('radial',[$008080,clwhite],[100,100],[0,14],matrix);
  Circle(6,6,15);
  downcur:=false;
  xmouse:=0;
  ymouse:=0;
  trackmin:=trmin;
  trackmax:=trmax;
end;
 
constructor TTrackbar.Create(AOWNER:Movieclip;FTaille,trmin,trmax,posi:number;Kind:string);
begin
 inherited Create(AOWNER,'trackbar',AOWNER.getNextHighestDepth);
 w:=FTaille;
 state:=Kind;
 DrawTrackBar(w,12);
 cur:=TTrackcur.Create(self,trmin,trmax);
 cur.orientation:=Kind;
 position:=posi;
 if kind='horizontal' then
 begin
  cur._x:=(posi-trmin)*w/(trmax-trmin);
  cur._y:=0;
 end else
 if kind='vertical' then
 begin
  cur._y:=(trmax-posi)*w/(trmax-trmin);
  cur._x:=0;
 end;
end;
 
procedure TTrackbar.DrawTrackbar(Width, Height: number);
var matrix: Flash8.Matrix;
begin
 matrix := Flash8.Matrix.Create();
 if state='horizontal' then
 begin
  matrix.createGradientBox(width, height, Math.PI/2, 0, 0);
  beginGradientFill('linear',[$deedf6,$c4e5f6,$98d1ef,$66afd7],[100,100,100,100],[8,64,127,255],matrix);
  linestyle(2,$98d1ef);
  RoundRect(0,0,width,height,height/2);
 end else if state='vertical' then
 begin
  matrix.createGradientBox(height,width,0, 0, 0);
  beginGradientFill('linear',[$deedf6,$c4e5f6,$98d1ef,$66afd7],[100,100,100,100],[8,64,127,255],matrix);
  RoundRect(0,0,height,width,height/2);
  linestyle(2,$98d1ef);
 end;
end;
 
procedure  TTrackcur.onPress;
begin
 downcur:=true;
 xmouse:=_xmouse;
 ymouse:=_ymouse;
end;
 
procedure  TTrackcur.onEnterFrame;
var tr:TTrackbar;
begin
     tr:= TTrackbar(_parent);
 
     if downcur then
     if orientation='horizontal' then
     begin
      _x:= _x + _xmouse -xmouse;
      if _x<0 then _x:=0;
      if _x>tr.w then _x:=tr.w;
      tr.position:=_x*(trackmax-trackmin)/tr.w+trackmin;
     end
     else if orientation='vertical' then
     begin
      _y:= _y +_ymouse -ymouse;
      if _y<0 then _y:=0;
      if _y>tr.w then _y:=tr.w;
      tr.position:=trackmax-(_y*(trackmax-trackmin)/tr.w);
     end;
     tr.onChange;
end;
 
 
 
procedure  TTrackcur.onMouseUp;
begin
 downcur:=false;
end;
 
procedure TTrackbar.Roundrect(x,y,w,h,radius:number);
var
 ra,b:number;
begin
  ra := x + w;
  b := y + h;
  moveTo(x+radius, y);
  lineTo(ra-radius, y);
  CurveTo(ra,y, ra, y+radius);
  lineTo(ra, y+h-radius);
  CurveTo(ra, b, ra-radius, b);
  lineTo(x+radius, b);
  CurveTo(x, b,x, b-radius);
  lineTo(x, y+radius);
  CurveTo(x, y, x+radius,y);
end;
 
Procedure TTrackcur.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;
 
procedure TTrackbar.onChange;
begin
end;
 
end.
Donc me voilà tranquille avec la modif de couleurs sans plomber l'animation...
Mais le problème, c'est que je rajoute une couche avec cette technique de masque et le BlendMode:='add' ne marche plus (3 couches...)

J'ai tenté de créer un movieclip appartenant à Tspot au niveau 0 et j'ai dessiné dedans plutôt que dans TSpot directement.
Je me suis dit que peut-être, cet ensemble ne constituerait plus qu'une seule couche... ça ne marche pas.

comment fusionner des couches si cela est possible ?

par une autre technique setmask, je ne peux pas faire de masque sous forme de trou... ça plante.
__________________
Citation:
tout développeur plongé dans son code subit une poussée d'urticaire de bas en haut égale au poids du volume d'unités qu'il ajoute.
Archimède est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2012, 14h26   #2
Paul TOTH
Expert Confirmé Sénior
 
Avatar de Paul TOTH
 
Homme Paul TOTH
Freelance
Inscription : novembre 2002
Messages : 4 399
Détails du profil
Informations personnelles :
Nom : Homme Paul TOTH
Âge : 43
Localisation : Réunion

Informations professionnelles :
Activité : Freelance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2002
Messages : 4 399
Points : 10 743
Points : 10 743
je pense que tu peux t'en sortir soir avec un masque, soit avec un filtre

pour le masque tu peux regarder l'exemple SpotLight, pour les filtres j'en utilise sur des bitmap dans l'exemple Woods, mais ça doit pouvoir fonctionner sur un MovieClip
__________________
Developpez.com: Mes articles, forum FlashPascal
Entreprise: Execute SARL
Produits : UPnP, RemoteOffice, FlashPascal
Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5%
Paul TOTH est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2012, 14h34   #3
Archimède
Membre émérite
 
Avatar de Archimède
 
Homme anthony
Enseignant
Inscription : avril 2005
Messages : 1 026
Détails du profil
Informations personnelles :
Nom : Homme anthony
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : avril 2005
Messages : 1 026
Points : 975
Points : 975
J'ai déjà survolé spotlight... je vais regarder ça plus précisément...
pareil pour le motif couleur bois...
[code]

sinon, voilà ce que ça fait pour reprendre le code que j'avais déjà posté...
Code :
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
 
 
program PsyntheseAdd;
 
{$FRAME_WIDTH 1024}
{$FRAME_HEIGHT 600}
{$FRAME_RATE 60}
{$BACKGROUND $000000}
 
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)
  retour:boolean;
  rouge,vert,bleu:lumiere;
  constructor create;
  Procedure onEnterFrame;override;
 end;
 
Const D=250;
      dl=2;
 
constructor scene.create;
begin
 inherited create(_root,'scene',0);
 
 rouge:=lumiere.create(self,D,$FF0000);
 with rouge do
 begin
  _x:=Stage.width/2-stage.height/2+D/2;
  _y:=stage.height/2;
 end;
 
 vert:=lumiere.create(self,D,$00FF00);
 with vert do
 begin
  _x:=Stage.width/2+stage.height/2-D/2;
  _y:=stage.height/2;
 end;
 
 bleu:=lumiere.create(self,D,$0000FF);
 with bleu do
 begin
  _x:=Stage.width/2;
  _y:=stage.height-D/2;
 end;
 retour:=false;
end;
 
constructor lumiere.create(aowner:movieclip;taille,couleur:integer);
begin
 inherited create(aowner,'diapo', aowner.getNextHighestDepth());
 opaquebackground:=couleur;
 beginFill(0);
 moveto(-taille/2,-taille/2);
 lineto(taille/2,-taille/2);
 lineto(taille/2,taille/2);
 lineto(-taille/2,taille/2);
 lineto(-taille/2,-taille/2);
 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;
 
procedure scene.onEnterFrame;
begin
 if  (rouge._x >stage.width/2) or (rouge._x<Stage.width/2-stage.height/2+D/2)  then retour:=not retour;
 if not retour then
 begin
  rouge._x:=rouge._x+dl;
  vert._x:=vert._x-dl;
  bleu._y:=bleu._y-dl;
 end else
 begin
  rouge._x:=rouge._x-dl;
  vert._x:=vert._x+dl;
  bleu._y:=bleu._y+dl;
 end;
end;
 
begin
  scene.create;
end.
merci, je cogite avec tes exemples...
__________________
Citation:
tout développeur plongé dans son code subit une poussée d'urticaire de bas en haut égale au poids du volume d'unités qu'il ajoute.
Archimède est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2012, 12h55   #4
Paul TOTH
Expert Confirmé Sénior
 
Avatar de Paul TOTH
 
Homme Paul TOTH
Freelance
Inscription : novembre 2002
Messages : 4 399
Détails du profil
Informations personnelles :
Nom : Homme Paul TOTH
Âge : 43
Localisation : Réunion

Informations professionnelles :
Activité : Freelance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2002
Messages : 4 399
Points : 10 743
Points : 10 743
hello je t'ai dit des bêtises, dans spotLight je n'utilise pas un mask, je voulais le faire mais je ne sais plus pourquoi ça ne fonctionnait pas comme je le voulais


mais j'ai trouve un truc pour toi MovieClip.Transform.ColorTransform, le seul truc particulier c'est la façon dont il faut le modifier

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
var
  t: Transform;
  c: ColorTransform;
begin
// rouge.transform.colortransform.alphaMultiplier := 0.5; !!! marche pas !!!
 t := rouge.transform;
 c := t.ColorTransform;
 c.alphaMultiplier := 0.5;
 t.ColorTransform := c;
 rouge.transform := t;
end;
avec ça tu peux même avoir des disques blancs et jouer sur redMultiplier, greedMultiplier et blueMultiplier
__________________
Developpez.com: Mes articles, forum FlashPascal
Entreprise: Execute SARL
Produits : UPnP, RemoteOffice, FlashPascal
Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5%
Paul TOTH est actuellement connecté   Envoyer un message privé Réponse avec citation 20
Vieux 09/11/2012, 15h01   #5
Archimède
Membre émérite
 
Avatar de Archimède
 
Homme anthony
Enseignant
Inscription : avril 2005
Messages : 1 026
Détails du profil
Informations personnelles :
Nom : Homme anthony
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : avril 2005
Messages : 1 026
Points : 975
Points : 975
nickel, je tente le coup ce soir...

un essai :

Code :
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
 
program Pspot;
 
{$FRAME_WIDTH 1000}
{$FRAME_HEIGHT 600}
{$BACKGROUND $000000}
 
uses
  Flash8,utrack;
 
 
type
 TTrackbar1=class(TTrackbar)
  procedure onChange;override;
 end;
 
 Tspot=class(movieclip)
  track:TTrackbar1;
  Procedure circle(Cx,Cy,Radius:number);
  constructor create;
 end;
 
 
 
var spot:Tspot;
    t: Transform;
    c: ColorTransform;
 
Function RGB(R,V,B:integer):number;
begin
 result:=65536*R+256*V+B;
end;
 
Procedure Tspot.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;
 
constructor Tspot.create;
begin
 inherited create(_root,'spot',0);
 beginfill(clred);
 circle(200,200,150);
 track:=TTrackbar1.create(_root,300,0,100,100,'vertical');
 with track do
 begin
   _x:=600;
   _y:=150;
 end;
 _x:=100;
 _y:=100;
end;
 
procedure TTrackbar1.onChange;
begin
 t := spot.transform;
 c := t.ColorTransform;
 c.redmultiplier :=position/100; //max 1 (de 0 à 1)
 t.ColorTransform := c;
 spot.transform := t;
end;
 
begin
 spot:=Tspot.create;
end.
concluant

merci c'est top !
__________________
Citation:
tout développeur plongé dans son code subit une poussée d'urticaire de bas en haut égale au poids du volume d'unités qu'il ajoute.
Archimède est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2012, 17h19   #6
Archimède
Membre émérite
 
Avatar de Archimède
 
Homme anthony
Enseignant
Inscription : avril 2005
Messages : 1 026
Détails du profil
Informations personnelles :
Nom : Homme anthony
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : avril 2005
Messages : 1 026
Points : 975
Points : 975
En brut de décoffrage sans optimisation du onEnterFrame, voilà ce que ça donne :

Code :
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
 
program PsyntheseAdd;
 
{$FRAME_WIDTH 1024}
{$FRAME_HEIGHT 600}
{$FRAME_RATE 60}
{$BACKGROUND $000000}
 
uses
  Flash8,utrack;
type
 lumiere=class(movieclip)
  private
   Procedure circle(Cx,Cy,Radius:number);
  public
   constructor create(aowner:movieclip;taille,couleur:integer);
 end;
 
 scene=class(movieclip)
  retour:boolean;
  track1,track2,track3:TTrackbar;
  constructor create;
  Procedure onEnterFrame;override;
 end;
 
Const D=250;
      dl=2;
 
var  t: Transform;
     c: ColorTransform;
     rouge,vert,bleu:lumiere;
 
constructor scene.create;
begin
 inherited create(_root,'scene',0);
 
 rouge:=lumiere.create(self,D,$FF0000);
 with rouge do
 begin
  _x:=Stage.width/2-stage.height/2+D/2;
  _y:=stage.height/2;
 end;
 
 vert:=lumiere.create(self,D,$00FF00);
 with vert do
 begin
  _x:=Stage.width/2+stage.height/2-D/2;
  _y:=stage.height/2;
 end;
 
 bleu:=lumiere.create(self,D,$0000FF);
 with bleu do
 begin
  _x:=Stage.width/2;
  _y:=stage.height-D/2;
 end;
 
 track1:=TTrackbar.create(_root,300,0,100,100,'vertical');
 with track1 do
 begin
   _x:=880;
   _y:=150;
 end;
 
 
 track2:=TTrackbar.create(_root,300,0,100,100,'vertical');
 with track2 do
 begin
   _x:=920;
   _y:=150;
 end;
 
 track3:=TTrackbar.create(_root,300,0,100,100,'vertical');
 with track3 do
 begin
   _x:=960;
   _y:=150;
 end;
 
retour:=false;
end;
 
constructor lumiere.create(aowner:movieclip;taille,couleur:integer);
begin
 inherited create(aowner,'diapo', aowner.getNextHighestDepth());
 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;
 
procedure scene.onEnterFrame;
begin
 if  (rouge._x >stage.width/2) or (rouge._x<Stage.width/2-stage.height/2+D/2)  then retour:=not retour;
 if not retour then
 begin
  rouge._x:=rouge._x+dl;
  vert._x:=vert._x-dl;
  bleu._y:=bleu._y-dl;
 end else
 begin
  rouge._x:=rouge._x-dl;
  vert._x:=vert._x+dl;
  bleu._y:=bleu._y+dl;
 end;
 
 t :=rouge.transform;
 c := t.ColorTransform;
 c.redmultiplier :=track1.position/100;
 t.ColorTransform := c;
 rouge.transform := t;
 
 t :=vert.transform;
 c := t.ColorTransform;
 c.Greenmultiplier :=track2.position/100;
 t.ColorTransform := c;
 vert.transform := t;
 
 t :=bleu.transform;
 c := t.ColorTransform;
 c.bluemultiplier :=track3.position/100;
 t.ColorTransform := c;
 bleu.transform := t;
 
end;
 
begin
  scene.create;
end.
Par contre, une valeur décimale multipliée par une intensité de couleur, ça ne m'explique pas que ça puisse me renvoyer une valeur entière comprise entre 0 et 255.

Quelle est le dessous de cette transformation ?

j'ai supposé qu'ici, ça ne fait que le floor du résultat du produit de la valeur décimale (de 0 à 1) par mon intensité de couleur...

Sinon, c'est encore du grand Chef

merci
__________________
Citation:
tout développeur plongé dans son code subit une poussée d'urticaire de bas en haut égale au poids du volume d'unités qu'il ajoute.
Archimède est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2012, 18h20   #7
Paul TOTH
Expert Confirmé Sénior
 
Avatar de Paul TOTH
 
Homme Paul TOTH
Freelance
Inscription : novembre 2002
Messages : 4 399
Détails du profil
Informations personnelles :
Nom : Homme Paul TOTH
Âge : 43
Localisation : Réunion

Informations professionnelles :
Activité : Freelance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2002
Messages : 4 399
Points : 10 743
Points : 10 743
oui Flash se débrouille pour ne conserver qu'une valeur entre 0..255

en fait plus je découvre Flash plus je trouve qu'il y a des tas de choses sympas si j'avais un peu de temps je me lancerais bien dans une version ActionScript 3 mais ça demande trop de travail pour le temps que j'ai à y consacrer.

car, pour info, avec FlashPascal on peut faire une application AIR (car il est possible de transformer un .SWF en .AIR). L'avantage de AIR c'est qu'on n'est plus dans un navigateur, c'est une appli avec icône sur le bureau et qui apparait dans le panneau de config et tout

On peut même, et là ça devient carrément intéressant, développer avec AIR sous Android...SAUF, et oui il y a un gros bémol, que AIR sous Android ne supporte pas ActionScript2, et donc FlashPascal2 ne fonctionne pas !
__________________
Developpez.com: Mes articles, forum FlashPascal
Entreprise: Execute SARL
Produits : UPnP, RemoteOffice, FlashPascal
Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5%
Paul TOTH est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/11/2012, 18h35   #8
Archimède
Membre émérite
 
Avatar de Archimède
 
Homme anthony
Enseignant
Inscription : avril 2005
Messages : 1 026
Détails du profil
Informations personnelles :
Nom : Homme anthony
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : avril 2005
Messages : 1 026
Points : 975
Points : 975
Citation:
Envoyé par Paul TOTH Voir le message
pour info, avec FlashPascal on peut faire une application AIR (car il est possible de transformer un .SWF en .AIR). L'avantage de AIR c'est qu'on n'est plus dans un navigateur, c'est une appli avec icône sur le bureau et qui apparait dans le panneau de config et tout

On peut même, et là ça devient carrément intéressant, développer avec AIR sous Android...SAUF, et oui il y a un gros bémol, que AIR sous Android ne supporte pas ActionScript2, et donc FlashPascal2 ne fonctionne pas !
Très intéressant..., je vais essayé le .AIR...
C'est vrai que Flash est étonnant par ses possibilités !
Je me mettrais bien à as3 mais quand je fais autre chose que du pascal, je suis vite lassé par la lourdeur de l'écriture et j'abandonne rapidement...
Le plaisir n'est plus là.

merci encore pour ta contribution
__________________
Citation:
tout développeur plongé dans son code subit une poussée d'urticaire de bas en haut égale au poids du volume d'unités qu'il ajoute.
Archimède est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2012, 16h40   #9
Archimède
Membre émérite
 
Avatar de Archimède
 
Homme anthony
Enseignant
Inscription : avril 2005
Messages : 1 026
Détails du profil
Informations personnelles :
Nom : Homme anthony
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : avril 2005
Messages : 1 026
Points : 975
Points : 975
Citation:
car il est possible de transformer un .SWF en .AIR).
Comment ? , je n'ai pas trouvé de convertisseur...
__________________
Citation:
tout développeur plongé dans son code subit une poussée d'urticaire de bas en haut égale au poids du volume d'unités qu'il ajoute.
Archimède est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2012, 04h42   #10
Paul TOTH
Expert Confirmé Sénior
 
Avatar de Paul TOTH
 
Homme Paul TOTH
Freelance
Inscription : novembre 2002
Messages : 4 399
Détails du profil
Informations personnelles :
Nom : Homme Paul TOTH
Âge : 43
Localisation : Réunion

Informations professionnelles :
Activité : Freelance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2002
Messages : 4 399
Points : 10 743
Points : 10 743
Citation:
Envoyé par Archimède Voir le message
Comment ? , je n'ai pas trouvé de convertisseur...
il faut utiliser le SDK Flex...ce n'est pas immédiat, mais je lance un nouveau Thread avec une manipulation simplifiée
__________________
Developpez.com: Mes articles, forum FlashPascal
Entreprise: Execute SARL
Produits : UPnP, RemoteOffice, FlashPascal
Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5%
Paul TOTH est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2012, 13h16   #11
Archimède
Membre émérite
 
Avatar de Archimède
 
Homme anthony
Enseignant
Inscription : avril 2005
Messages : 1 026
Détails du profil
Informations personnelles :
Nom : Homme anthony
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : avril 2005
Messages : 1 026
Points : 975
Points : 975
Citation:
Envoyé par Paul TOTH Voir le message
il faut utiliser le SDK Flex...ce n'est pas immédiat, mais je lance un nouveau Thread avec une manipulation simplifiée
Merci, nickel !
__________________
Citation:
tout développeur plongé dans son code subit une poussée d'urticaire de bas en haut égale au poids du volume d'unités qu'il ajoute.
Archimède est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 06h10.


 
 
 
 
Partenaires

Hébergement Web