IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flash Pascal Discussion :

Fusion de couches [Flash Pascal]


Sujet :

Flash Pascal

  1. #1
    Membre Expert
    Avatar de Archim�de
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activit� : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    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 : 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
     
    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 : 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
    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.

  2. #2
    Expert �minent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Paris (�le de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par d�faut
    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
    Le Store Excute Store

  3. #3
    Membre Expert
    Avatar de Archim�de
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activit� : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par d�faut
    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 : 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
    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...

  4. #4
    Expert �minent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Paris (�le de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par d�faut
    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 : S�lectionner tout - Visualiser dans une fen�tre � part
    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
    Le Store Excute Store

  5. #5
    Membre Expert
    Avatar de Archim�de
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activit� : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par d�faut
    nickel, je tente le coup ce soir...

    un essai :

    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
     
    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 !

  6. #6
    Membre Expert
    Avatar de Archim�de
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activit� : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par d�faut
    En brut de d�coffrage sans optimisation du onEnterFrame, voil� ce que �a donne :

    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
    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

  7. #7
    Expert �minent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Paris (�le de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par d�faut
    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
    Le Store Excute Store

  8. #8
    Membre Expert
    Avatar de Archim�de
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activit� : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par d�faut
    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

  9. #9
    Membre Expert
    Avatar de Archim�de
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activit� : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par d�faut
    car il est possible de transformer un .SWF en .AIR).
    Comment ? , je n'ai pas trouv� de convertisseur...

  10. #10
    Expert �minent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Paris (�le de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par d�faut
    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
    Le Store Excute Store

  11. #11
    Membre Expert
    Avatar de Archim�de
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activit� : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par d�faut
    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 !

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Fusion de lignes de tables en �liminant les redondances
    Par MinsK dans le forum Algorithmes et structures de donn�es
    R�ponses: 12
    Dernier message: 22/04/2004, 09h21
  2. [MFC]Info sur da la fusion sous Word
    Par kor dans le forum MFC
    R�ponses: 6
    Dernier message: 22/08/2003, 11h14
  3. Fusion directe dans word
    Par wozzy dans le forum Access
    R�ponses: 10
    Dernier message: 03/06/2003, 21h02
  4. Tri par fusion d'un tableau
    Par Mailgifson dans le forum C
    R�ponses: 5
    Dernier message: 12/12/2002, 14h53
  5. programmation reseau - couche 2 du modele osi
    Par sahor dans le forum C++Builder
    R�ponses: 3
    Dernier message: 06/11/2002, 18h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo