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 :

Cause du ralentissement progressif d'une animation [Flash Pascal]


Sujet :

Flash Pascal

  1. #1
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 087
    Points : 15 506
    Points
    15 506
    Billets dans le blog
    9
    Par défaut Cause du ralentissement progressif d'une animation
    Bonjour !

    J'ai observé que l'animation suivante ralentit progressivement, même jusqu'à s'arrêter. Ce phénomène se produit aussi bien dans la fenêtre de prévisualisation de l'éditeur que dans Google Chrome.

    J'avais déjà fait la même observation avec un autre programme et j'avais résolu le problème je ne sais trop comment. Là, j'ai beau relire mon code : je ne vois rien d'anormal. Auriez-vous une idée de la cause de ce ralentissement ?

    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
     
    {$FRAME_WIDTH 432}
    {$FRAME_HEIGHT 24}
    {$FRAME_RATE 4}
    {$BACKGROUND $545454}{Couleurs.DarkGray}
     
    program Bits;
     
    (* FlashPascal 2 v14.04.22 *)
     
    uses
      Flash8, Couleurs;
     
    const
      MaxInt = $7FFFFFFF;
     
    type
      TPoint = class(MovieClip)
        procedure Tracer;
        constructor Create(Depth, x, y, Color: Integer);
        procedure SetColor(Color: Integer);
      end;
     
    procedure TPoint.Tracer;
    begin
      MoveTo(0, -4);
      CurveTo(+4, -4, +4,  0);
      CurveTo(+4, +4,  0, +4);
      CurveTo(-4, +4, -4,  0);
      CurveTo(-4, -4,  0, -4);
    end;
     
    constructor TPoint.Create(Depth, x, y, Color: Integer);
    begin
      inherited Create(nil, '', Depth);
      LineStyle(0, Color);
      BeginFill(Color);
      Tracer;
      EndFill();
      _x := x;
      _y := y;
    end;
     
    procedure TPoint.SetColor(Color: Integer);
    begin
      LineStyle(0, Color);
      BeginFill(Color);
      Tracer;
      EndFill();
    end;
     
    var
      a: array[0..31] of TPoint;
      i: Integer;
     
    type
      Horloge = class(MovieClip)
        procedure onEnterFrame; override;
      end;
     
    procedure Horloge.onEnterFrame;
    var
      x: Integer;
    begin
      if i < MaxInt then
      begin
        for x := 0 to 31 do
          if i and (1 shl x) > 0 then
            a[31 - x].SetColor(LawnGreen)
          else
            a[31 - x].SetColor(Gray);
        Inc(i);
      end;
    end;
     
    var
      x: Integer;
     
    begin
      for x := 0 to 31 do
          a[x] := TPoint.Create(
            x + 1,
            12 * x + 12 * (x div 8) + 12,
            12,
            Gray
          );
      i := 0;
      stage.scaleMode := 'noScale';
      Horloge.Create(nil, 'h', 0);
    end.
    Fichiers attachés Fichiers attachés

  2. #2
    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 : 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
    Points : 28 457
    Points
    28 457
    Par défaut
    il manque un Clear() dans SetColor(), car là tu ajoutes un nouvel ordre graphique à chaque fois et Flash se retrouve à dessiner autant de fois le point que tu as appelé la méthode SetColor()

  3. #3
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 087
    Points : 15 506
    Points
    15 506
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    il manque un Clear() dans SetColor(), car là tu ajoutes un nouvel ordre graphique à chaque fois et Flash se retrouve à dessiner autant de fois le point que tu as appelé la méthode SetColor()
    Voilà qui est bon à savoir.

    J'ai dû faire l'erreur pas mal de fois sans m'en apercevoir.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 05/11/2009, 18h39
  2. Réponses: 1
    Dernier message: 13/12/2007, 08h15
  3. comment integer une animation swf dans une page
    Par naili dans le forum Intégration
    Réponses: 7
    Dernier message: 18/09/2002, 19h54
  4. Comment ne pas rejouer une animation après un clic ?
    Par mmmmhhh dans le forum ActionScript 1 & ActionScript 2
    Réponses: 4
    Dernier message: 04/09/2002, 17h11
  5. Passage de parametre a une anim Flash 5
    Par debug dans le forum Intégration
    Réponses: 4
    Dernier message: 03/06/2002, 18h59

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