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 :

Routine simple d'animation


Sujet :

Flash Pascal

  1. #1
    Membre expérimenté
    Routine simple d'animation
    Bonjour, je m'adresse à Paul Toth que j'ai déjà croisé sur le forum delphi s'il a le temps ...
    J'ai regardé le code source de barycentre et j'ai essayé de produire un essai d'animation élémentaire... un rectangle qui bouge horizontalement par exemple.
    Le but étant d'avoir un exemple de routine pour pouvoir complexifier la chose plus tard...

    Je n'y suis pas parvenu puisque la doc est vraiment très limitée...
    Le tourne page est aussi intéressant mais pour démarrer, c'est un peu raide.
    Si Paul Toth ou un mordu de Flashpascal pouvait me donner l'ossature d'une animation simple ...ce serait salvateur lol.
    Sinon, c'est génial de pouvoir convertir en flash. Bravo
    @+

  2. #2
    Expert éminent sénior
    alors en fait il faut certaines notions en Flash pour développer sous FlashPascal


    une animation est cadancée à une certain vitesse définie dans FlashPascal par {$FRAME_RATE 25} par exemple qui fixe l'animation à 25 images/seconde

    Partant de là l'évènement onEnterFrame de tous les MovieClip est déclenché à cette cadence.

    ensuite les dessins sont persistants dans Flash, donc quand on dessiner sur un MovieClip, les lignes et remplissage sont toujours présents (sauf si on appel la méthode clear évidemment). MAIS on peut leur appliquer des transformations en changeant _x, _y, _scalex, _scaley et _rotation par exemple !

    voici un exemple simple pour illustrer mon propos

    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
     
    program Quad;
     
    uses 
      Flash8;
     
    // dimensions et fréquence de l'animation
    {$FRAME_WIDTH 200}
    {$FRAME_HEIGHT 200}
    {$FRAME_RATE 25}
     
    type
      TCarre = class(MovieClip)
        constructor Create;
        procedure onEnterFrame;
      end;
     
    constructor TCarre.Create;
    begin
      inherited Create(nil, 'carre', 1);
    // centrer
      _x := 100;
      _y := 100;
    // ligne rouge
      lineStyle(4, $ff0000);
    // un carré autour du centre
      moveto(-25,-25);
      lineto(+25,-25);
      lineto(+25,+25);
      lineto(-25,+25);
      lineto(-25,-25);
    end;  
     
    procedure TCarre.onEnterFrame;
    begin
    // 25 fois par seconde, changer l'angle de rotation
      _rotation := _rotation + 0.5;
    end;
     
    begin
      TCarre.Create;
    end.


    avec ce principe et quelques MovieClip en plus on peut obtenir ceci

    EDIT: ça serait sympa de pouvoir mettre du Flash dans le forum
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre expérimenté
    Merci pour ta réponse flash ! .Nickel.
    Ton animation jointe est géniale

    J'avais à peu près compris, mais je ne sais pas mon appli refusait de compiler.
    Avec ton exemple, je vais pouvoir rectifier...

    comment pouvoir contrôler les paramètres de l'animation sans au moins pouvoir introduire un trackbar ? C'est prévu ou c'est encore en construction ? Je n'ai rien vu dans les unités qui permettait d'en créer un.

    Merci encore pour le coup de pouce !

    @+

  4. #4
    Expert éminent sénior
    FlashPascal utilise la machine virtuelle Flash...qui a des capacités graphiques et de calcule, mais ne possède pas de composant.

    Les composants que tu peux utiliser dans Adobe Flash sont développés en Flash ajoutent des tas de choses dans le .SWF pour que le développeur Flash ne se pose pas de question.

    En résumé, si tu veux une VCL pour FlashPascal, il faut l'écrire ^^

    le peu de temps que je peux consacrer au projet, je le passe sur le compilateur et un peu sur l'IDE, je n'ai pas le temps de créer des composants ... d'autant que je n'ai pas prévu de faire un Delphi like pour Flash...ça pourrait venir si un client me paye pour ça ou si j'avais un besoin de développer un projet Flash avec des choses réutilisables, mais ce n'est pas le cas aujourd'hui, ça reste donc un projet pour le fun
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre expérimenté
    Rien que pour le fun, ce n'est déjà pas mal !
    il y a de quoi s'amuser...
    merci encore

  6. #6
    Rédacteur/Modérateur

    Citation Envoyé par Paul TOTH Voir le message
    voici un exemple simple pour illustrer mon propos
    L'exemple est parfait !


  7. #7
    Expert éminent sénior
    notez également qu'il y a un certain laxisme sur la syntaxe Pascal à cause de Flash...notamment "virtual" et "override" ne sont pas gérés, et la méthode onEnterFrame n'est pas déclarée dans MovieClip...peut-être que je forcerais tout cela dans une prochaine version, on aura alors une méthode virtuelle onEnterFrame sur MovieClip et il faudra la surcharger dans TCarre.

    là ou ça devient sioux, c'est avec addListener(), car l'objet en paramètre peut être n'importe quoi, s'il déclare les méthodes adéquates, elles seront invoquées, sinon non...c'est un comportement qui n'existe pas sous Delphi...bien qu'on puisse truander avec les "messages" ou les "RTTI"...d'ailleurs les méthodes peuvent ne pas avoir le bon nombre de paramètres, on s'en fiche elle sera tout de même invoquée avec des paramètres incomplets ou vides selon le cas...

    J'ai aussi le cas du type "Number"...c'est un type hybride qui est indifféremment un Integer ou un Double puisque Flash ne fait pas réellement de distinction entre 1, 1.0 et '1' !

    Je tente de rendre les choses le plus cohérentes possible, mais ce n'est pas toujours évident
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  8. #8
    Membre expérimenté
    Merci pour l'info sur l'overriding, on sent ton soucis de rigueur sur la POO...
    Bon courage pour adapter tout ça...
    @+