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 :

Propriété et variable


Sujet :

Flash Pascal

  1. #1
    Rédacteur/Modérateur

    Propriété et variable
    Bonjour !

    Voici un exemple de code Flash Pascal qui... n'est pas bon.

    Je voulais essayer de faire une petite horloge, et j'ai commencé par la trotteuse. J'ai presque réussi mais il y a une variable que je n'arrive pas à passer : le nombre de secondes. Si je l'initialise, l'aiguille s'affiche correctement, mais elle ne bouge pas.
    J'ai remarqué que je pouvais faire varier _x et _y à partir de la procedure TTrotteuse.onEnterFrame, mais pas ma variable s.
    Quelle est la solution ?



    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
    uses Flash8, Math;
     
    {$FRAME_WIDTH  200}
    {$FRAME_HEIGHT 200}
    {$FRAME_RATE     1}
     
    type
      TTrotteuse=class(MovieClip)
        constructor Create;
        procedure onEnterFrame;
      end;
     
    var s: Integer;
     
    constructor TTrotteuse.Create;
    begin
      inherited Create(nil,'trotteuse',1);
     
      lineStyle(1, $000077);
     
      //s:=15;
     
      moveTo(0,0);
      lineTo(90*sin(_PI*s/30),-90*cos(_PI*s/30));
     
      _x:=100;
      _y:=100;
    end;
     
    procedure TTrotteuse.onEnterFrame;
    begin
      s:=s+1;
      if s=60 then s:=0;
    end;
     
    begin
      //s:=15;
      TTrotteuse.Create;
    end.

  2. #2
    Expert éminent sénior
    Voici ce que ça donne

    Attention, une variable non initialisée à une valeur NaN !

    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
     
    program Horloge;
     
    uses Flash8, Math;
     
    {$FRAME_WIDTH  200}
    {$FRAME_HEIGHT 200}
    {$FRAME_RATE     1}
     
    type
      TTrotteuse=class(MovieClip)
        constructor Create;
        procedure onEnterFrame;
      end;
     
    var s: Integer;
     
    constructor TTrotteuse.Create;
    begin
      inherited Create(nil,'trotteuse',1);
     
      lineStyle(1, $000077);
     
      moveTo(0,0);
      lineTo(0,-90);
     
      _x:=100;
      _y:=100;
     
      s := 0; // définir S (sinon S = NaN !)
    end;
     
    procedure TTrotteuse.onEnterFrame;
    begin
      s := (s + 1) mod 60; // maxi 60 secondes
      _rotation := 6 * s;  // maxi 360°
    end;
     
    begin
      TTrotteuse.Create;
    end.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Rédacteur/Modérateur

    C'est gentil d'avoir répondu si vite.

    Citation Envoyé par Paul TOTH Voir le message
    Attention, une variable non initialisée à une valeur NaN !
    "NaN", qu'est-ce que ça veut dire ?

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
      _rotation := 6 * s;  // maxi 360°


    Mais là, si je comprends bien, c'est le MovieClip qui tourne sur lui-même, n'est-ce pas ? Cette solution pourrait-elle aller si on rajoutait les autres aiguilles ?

  4. #4
    Expert éminent sénior
    Citation Envoyé par Roland Chastain Voir le message
    C'est gentil d'avoir répondu si vite.



    "NaN", qu'est-ce que ça veut dire ?
    Not A Number du coup tout opération arithmétique est invalide et laisse la valeur NaN



    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
      _rotation := 6 * s;  // maxi 360°


    Mais là, si je comprends bien, c'est le MovieClip qui tourne sur lui-même, n'est-ce pas ? Cette solution pourrait-elle aller si on rajoutait les autres aiguilles ?
    oui à condition de mettre chaque aiguille dans un MovieClip différent.

    il sera plus efficace de faire tourner les 3 movieClip à leur rythme que de redessiner les aiguilles à chaque fois avec un sinus/cosinus etc...
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

###raw>template_hook.ano_emploi###