Créer son site Gratuitement : Service / Outils webmaster gratuit
Mon Site Gratuit
Contactez nous
Nos partenaires
Scripts
Tutoriaux
Nos services
Forums
Accueil
ForumsCS3|AS3 : L'objet Timer : Simulation d'une animation
      Imprimer le sujet FAQ  M'enregistrer 
  Le monde virtuelle du flash vous réserve plein de suprise éblouissante rien que pour vous !
Animations à gogo ... Bonne visite !

CS3|AS3 : L'objet Timer : Simulation d'une animation

Messagede zardoz le 11 Nov 2008, 08:32

Simuler une animation à partir d'un objet visuel fixe


L'objet Timer, classe prédéfini de Flash s'apparente aux animations. En principe il s'agit plutôt d'une simulation. La méthode qui sera appeller à s'exécuter plusieurs fois donnera l'impression d'une courte animation. Mais la méthode ne gère qu'un élément visuel fixe. La classe Timer gère le temps. Avec un évènement vous pouvez exécuter plusieurs fois une de vos méthodes personnalisés. Ici vous avez un package, une classe et quelques méthodes. La méthode principale se nomme initTemps. Cette méthode est appeller à partir d'un objet d'instanciation, défini dans le fichier .fla. Le package ici sera improve.communication. La classe tant qu'à elle se nomme Temps.

Le but de ce topic fait suite au tutorial dans le secteur des tutoriaux en programmation. Son but est de démontrer l'exécution d'une méthode qui gère l'aspect visuel comme résultat. Cette méthode se nomme executeFormes et est paramètrable. Une autre méthode se nomme executeTemps. Cette méthode a pour but d'appeler la méthode paramètrable executeFormes ( param's ). La méthode sera appeller à s'exécuter selon un nombre de fois et en plus, elle sera exécuter selon un temps défini : voici la signature de la méthode principale :

public function initTemps( $millisecondes:Number, $nombreFois:Number) : void { .. Instructions et développements .. } . C'est cette méthode qui sera appeller à partir du fichier .fla. Voici un aperçu du fichier .fla :


import improve.communication.Temps;

var t:Temps = new Temps();
addChild(t);
t.initTemps(25, 27);


Ici la méthode executeFormes défini dans le fichier de classe sera tout simplement exécuter à toutes les 25 millisecondes et ce 27 fois. Cette méthode n'a qu'un seul but, dessiner une forme. Mais une autre méthode nommé executeTemps appelle la méthode executeFormes avec ses paramètres. Voici un exemple de sa signature : this.executeFormes ( 10, 10, 580, 12, 0x0000FF ) ;

Un peu d'information sur son fonctionnement


Cette méthode ne dessine qu'une seule forme visuelle. Elle sera tout simplement dupliquer et positionner en ' y' , selon deux variables de contrôle. L'une se nomme duplication et l'autre se nomme espace. Leurs buts est de positionner correctement la méthode appeller selon un nombre de fois déterminer. Il ne s'agit pas de la duplication de l'objet visuel, mais de l'appelle de la méthode un nombre de fois, 27 fois ici. La méthode appeller laisse un trace visuel de son exécution en ' y , à toute les 25 millisecondes. C'est le point à retenir. C'est le sujet du topic. La boucle for ne sera, tout au plus, qu'un appelle de la méthode executeFormes. Celle-ci s'exécutera nombre de fois et sera placer en position. N'importe quelle méthode pourrait être appeller. Celà dépend de vous. J'ai déjà expérimenter des chargements de données sous des formes variées, comme des données stocker dans une matrice par exemple. L'intérêt réside dans le fait que les données sont charger en fonction du temps, soit rapidement, sois lentement, sans compter la quantité, de 2 éléments à n éléments.

Vos scripts à écrires et/ou sélectionner


Voici le fichier .as : Celui-ci est placer dans le package improve.communication : Temps.as dans le répertoire communication

Code: Tout sélectionner
package improve.communication
{
   import flash.display.Sprite;
   import flash.events.TimerEvent;
   import flash.events.Event;
   import flash.utils.Timer;
   //
   public class Temps extends Sprite
   {
      private var tempo:Timer;
      private var milliSecondes:Number;
      private var nombreFois:Number;
      private var objet:Sprite;
      private var i:int;
      private var duplication:Number;
      private var espace:Number;
      //
      public function Temps ()
      {
         // Constructeur par défaut
      }
      public function initTemps ($milliSecondes:Number, $nombreFois:Number):void
      {
         this.milliSecondes = $milliSecondes;
         this.nombreFois = $nombreFois;
         //
         tempo = new Timer(milliSecondes, nombreFois);
         tempo.addEventListener (TimerEvent.TIMER, executeTemps);
         tempo.start ();
      }
      public function executeTemps (event:TimerEvent):void
      {
         trace ('La fonction a été exécuté ' + event.target.currentCount + ' fois');
         //
         duplication = Math.abs(i * espace);
         for (i = 0; i < event.target.currentCount; i++)
         {
            this.executeFormes (10, 13, 580, 12, 0x0000FF);
         }
      }
      public function executeFormes ($posx:Number, $posy:Number, $largeur:Number, $hauteur:Number, $couleur:uint):void
      {
         var posx:Number = $posx;
         var posy:Number = $posy;
         var largeur:Number = $largeur;
         var hauteur:Number = $hauteur;
         var couleur:uint = $couleur;
         //
         objet = new Sprite();
         objet.graphics.beginFill (couleur);
         objet.graphics.drawRect (posx, posy, largeur, hauteur);
         objet.y = duplication;
         espace = objet.height + 2;
         addChild (objet);
      }
   }
}


Voici votre fichier .fla : C'est votre fichier d'exécution : temps_01.fla : Placer à l'extérieur du package

Code: Tout sélectionner
import improve.communication.Temps;
//
var t:Temps = new Temps();
addChild(t);
t.initTemps(25, 27);


Résumé et téléchargement


C'est ici, au fichier .fla que vous pouvez changer les valeurs en paramètre. Exemple : t.initTemps(100, 12);
Pour la première fois j'ai accepter de générer un résultat visuel à partir de la classe. C'est un genre que je ne fait pas en temps normal. Le point faible lorsque une classe gère des résultat visuels, c'est que vous devez ouvrir le fichier de classe pour faire des changement de valeur. Ne procéder de la sorte seulement si vous prévoyez un visuel permanent, mais si vous prévoyez des changements fréquents d'un objet visuel, vaut mieux que celui-ci ne porte que des données paramètrables et manipuler lors de l'instanciation de la classe, à partir du fichier .fla.

Les points à retenir :

--> [1] L'objet Timer s'apparente aux objets d'animations.
--> [2] Vous pouvez contrôler par programmation le déplacement de la tête de lecture
--> selon une méthode personnalisé. En fait vous contôler votre scénario par écriture seulement.
--> [3] N'oubliez pas que ce genre exécute une méthode ou une fonction un nombre de fois ajustable
--> selon un temps d'exécution ajustable.
--> [4] Vous pouvez contrôler les chargements de données externes.
--> [5] Vous pouvez faire entendre un son mp3, court mais répétitif
--> charger depuis l'externe à partir d'une action utilisateur.

Bref tout ce que vous pouvez imaginer : matrice, variables, images, données etc. Dû moment qu'il s'agit d'une méthode ou d'une fonction. Évidemment l'objet Timer pourra sevir à beaucoup d'autre situation. La date et l'heure en particulier. Le seul but ici fut de démontrer l'aptitude à l'objet Timer de rendre le visuel propre à une animation. Cependant tout n'est qu'une illusion car aucune animation de type traditionnelle n'a été programmer ici. L'animation est surtout utilisé avec L'objet Event.ENTER_FRAME. Cet objet prédéfini de flash peut aussi programmer sa propre cadence d'exécution en dehors de l'ips par défaut. La manière que j'ai démontrer ici reste intéressante et vaut d`être expérimenter. Peut être aurez vous des idées sublimes à nous montrer.

Juste un exemple conçu avec l'objet Timer. Il y a trois classes qui drive le module.
Je le déposerai un de ces jours.

Image

Amicalement : zardoz : ;-) : ++
Dernière édition par zardoz le 25 Nov 2008, 07:21, édité 17 fois.
zardoz
Plug'zien Star'z
Plug'zien Star'z
 
Messages: 888
Inscription: 16 Fév 2008, 04:05
Points: 582


Re: CS3|AS3 : Classe : l'objet Timer

Messagede elition le 11 Nov 2008, 11:15

je n'utilise pas flash mais cela m'a l'air utile

merci
mon dernier tutoriel :

- ici

Image
Avatar de l'utilisateur
elition
Funny Plug'z
Funny Plug'z
 
Messages: 143
Inscription: 28 Mai 2008, 18:19
Points: 60


Re: CS3|AS3 : Classe : l'objet Timer

Messagede zardoz le 13 Nov 2008, 05:17

elition a écrit:je n'utilise pas flash mais cela m'a l'air utile


J'ai placer un lien en fin de page pour visualiser sur Olympe :
C'est une version HTML simple des résultats du tutoriel Flash avec téléchargements : zip

;-) ++
zardoz
Plug'zien Star'z
Plug'zien Star'z
 
Messages: 888
Inscription: 16 Fév 2008, 04:05
Points: 582



Retourner vers Flash

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités