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 :

Synthèse additive et obligation d'un fond noir


Sujet :

Flash Pascal

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut Synthèse additive et obligation d'un fond noir
    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 ?

  2. #2
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    Avec l'animation :

    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
     
    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());
     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;
     
    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.

  3. #3
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    sympa
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    merci, ça permet de voir avec la discussion précédente deux applications simples de blendmode...

Discussions similaires

  1. coloration syntaxique et fond noir?
    Par granquet dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 30/03/2007, 14h09
  2. Miniature avec un fond noir.
    Par Space Cowboy dans le forum Langage
    Réponses: 4
    Dernier message: 25/10/2006, 09h52
  3. Création d'un cercle plein blanc sur fond noir
    Par Rafoo dans le forum Traitement d'images
    Réponses: 10
    Dernier message: 11/04/2006, 14h53
  4. impression formulaire fond noir
    Par hocine dans le forum Access
    Réponses: 4
    Dernier message: 29/01/2006, 17h35
  5. [Eclipse] Programmer sur un fond noir
    Par raj dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 27/12/2004, 10h15

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