Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 11 sur 11
  1. #1
    Membre Expert
    Avatar de Archimède
    Homme Profil pro anthony LAURENT
    Enseignant
    Inscrit en
    avril 2005
    Messages
    1 196
    Détails du profil
    Informations personnelles :
    Nom : Homme anthony LAURENT
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2005
    Messages : 1 196
    Points : 1 255
    Points
    1 255

    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.

  2. #2
    Expert Confirmé Sénior
    Avatar de Paul TOTH
    Homme Profil pro Paul TOTH
    Freelance
    Inscrit en
    novembre 2002
    Messages
    5 608
    Détails du profil
    Informations personnelles :
    Nom : Homme Paul TOTH
    Âge : 45
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : novembre 2002
    Messages : 5 608
    Points : 16 078
    Points
    16 078

    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
    Produits : UPnP, RemoteOffice, FlashPascal
    Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5%

  3. #3
    Membre Expert
    Avatar de Archimède
    Homme Profil pro anthony LAURENT
    Enseignant
    Inscrit en
    avril 2005
    Messages
    1 196
    Détails du profil
    Informations personnelles :
    Nom : Homme anthony LAURENT
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2005
    Messages : 1 196
    Points : 1 255
    Points
    1 255

    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 :
    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 Confirmé Sénior
    Avatar de Paul TOTH
    Homme Profil pro Paul TOTH
    Freelance
    Inscrit en
    novembre 2002
    Messages
    5 608
    Détails du profil
    Informations personnelles :
    Nom : Homme Paul TOTH
    Âge : 45
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : novembre 2002
    Messages : 5 608
    Points : 16 078
    Points
    16 078

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

  5. #5
    Membre Expert
    Avatar de Archimède
    Homme Profil pro anthony LAURENT
    Enseignant
    Inscrit en
    avril 2005
    Messages
    1 196
    Détails du profil
    Informations personnelles :
    Nom : Homme anthony LAURENT
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2005
    Messages : 1 196
    Points : 1 255
    Points
    1 255

    Par défaut

    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 !

  6. #6
    Membre Expert
    Avatar de Archimède
    Homme Profil pro anthony LAURENT
    Enseignant
    Inscrit en
    avril 2005
    Messages
    1 196
    Détails du profil
    Informations personnelles :
    Nom : Homme anthony LAURENT
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2005
    Messages : 1 196
    Points : 1 255
    Points
    1 255

    Par défaut

    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

  7. #7
    Expert Confirmé Sénior
    Avatar de Paul TOTH
    Homme Profil pro Paul TOTH
    Freelance
    Inscrit en
    novembre 2002
    Messages
    5 608
    Détails du profil
    Informations personnelles :
    Nom : Homme Paul TOTH
    Âge : 45
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : novembre 2002
    Messages : 5 608
    Points : 16 078
    Points
    16 078

    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
    Produits : UPnP, RemoteOffice, FlashPascal
    Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5%

  8. #8
    Membre Expert
    Avatar de Archimède
    Homme Profil pro anthony LAURENT
    Enseignant
    Inscrit en
    avril 2005
    Messages
    1 196
    Détails du profil
    Informations personnelles :
    Nom : Homme anthony LAURENT
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2005
    Messages : 1 196
    Points : 1 255
    Points
    1 255

    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 anthony LAURENT
    Enseignant
    Inscrit en
    avril 2005
    Messages
    1 196
    Détails du profil
    Informations personnelles :
    Nom : Homme anthony LAURENT
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2005
    Messages : 1 196
    Points : 1 255
    Points
    1 255

    Par défaut

    car il est possible de transformer un .SWF en .AIR).
    Comment ? , je n'ai pas trouvé de convertisseur...

  10. #10
    Expert Confirmé Sénior
    Avatar de Paul TOTH
    Homme Profil pro Paul TOTH
    Freelance
    Inscrit en
    novembre 2002
    Messages
    5 608
    Détails du profil
    Informations personnelles :
    Nom : Homme Paul TOTH
    Âge : 45
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : novembre 2002
    Messages : 5 608
    Points : 16 078
    Points
    16 078

    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
    Produits : UPnP, RemoteOffice, FlashPascal
    Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5%

  11. #11
    Membre Expert
    Avatar de Archimède
    Homme Profil pro anthony LAURENT
    Enseignant
    Inscrit en
    avril 2005
    Messages
    1 196
    Détails du profil
    Informations personnelles :
    Nom : Homme anthony LAURENT
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2005
    Messages : 1 196
    Points : 1 255
    Points
    1 255

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •