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.

Amicalement : zardoz :
: ++





