Les mouvements d’une occurrence sur la scène
CHAPITRE 5
133
Utilisation de la classe Timer()
Il est intéressant de faire appel à la classe Timer() lorsqu’il est nécessaire de maîtriser le
rythme de l’effet.
Avec l’événement ENTER_FRAME et la classe Tween(), il est impossible de contrôler la cadence
d’un mouvement. La classe Timer() permet de gérer cet aspect-là d’une animation.
Prenons l’exemple d’une horloge, où le mouvement d’une aiguille doit se produire de
façon régulière, à chaque seconde. Voici le code qui permet d’obtenir ce comportement.
var mecanisme:Timer = new Timer(1000);
var instant_T:Date;
var coefHoraire:Number;
function tournerAiguilles(evt:TimerEvent) {
instant_T = new Date();
coefHoraire = instant_T.getHours()>=13 ? 15 : 30;
aigHeures.rotation = instant_T.getHours()*coefHoraire;
aigMinutes.rotation =instant_T.getMinutes()*6;
aigSecondes.rotation = instant_T.getSeconds()*6;
}
mecanisme.addEventListener(TimerEvent.TIMER,tournerAiguilles);
mecanisme.start();
Ce script est intéressant car il présente une technique d’animation totalement différente
de toutes celles que nous avons utilisées dans ce chapitre. Alors que la classe Tween() nous
permettait de définir une durée de mouvement, mais sans nous permettre de contrôler la
cadence, ici, nous nous appuyons sur une temporisation très précise.
Par ailleurs, ce script nous permet de découvrir la gestion de la classe Date(), également
abordée au chapitre 8, consacré aux tableaux, en gérant les jours de la semaine.
L’exemple suivant va combiner les classes Tween() et Timer() pour démontrer qu’on peut
exécuter un mouvement d’une durée précise à intervalle régulier.
import fl.transitions.*;
import fl.transitions.easing.*;
var compteur:Timer = new Timer(2500);
var mouvementBille:Tween;
function avancerBille(evt:TimerEvent) {
new Tween(billeMobile,"x",Regular.easeIn,billeMobile.x,Math.random()*500,1.5,true);
mouvementBille = new Tween(billeMobile,"y",Strong.easeOut,billeMobile.y,Math.
➥random()*280,2,true);
mouvementBille.addEventListener(TweenEvent.MOTION_FINISH,placerBille);
}
Remarque
Si vous ne connaissez pas la classe Timer(), consultez la fin du chapitre 3 qui traite de cette technique.
CHAPITRE 5
133
Utilisation de la classe Timer()
Il est intéressant de faire appel à la classe Timer() lorsqu’il est nécessaire de maîtriser le
rythme de l’effet.
Avec l’événement ENTER_FRAME et la classe Tween(), il est impossible de contrôler la cadence
d’un mouvement. La classe Timer() permet de gérer cet aspect-là d’une animation.
Prenons l’exemple d’une horloge, où le mouvement d’une aiguille doit se produire de
façon régulière, à chaque seconde. Voici le code qui permet d’obtenir ce comportement.
var mecanisme:Timer = new Timer(1000);
var instant_T:Date;
var coefHoraire:Number;
function tournerAiguilles(evt:TimerEvent) {
instant_T = new Date();
coefHoraire = instant_T.getHours()>=13 ? 15 : 30;
aigHeures.rotation = instant_T.getHours()*coefHoraire;
aigMinutes.rotation =instant_T.getMinutes()*6;
aigSecondes.rotation = instant_T.getSeconds()*6;
}
mecanisme.addEventListener(TimerEvent.TIMER,tournerAiguilles);
mecanisme.start();
Ce script est intéressant car il présente une technique d’animation totalement différente
de toutes celles que nous avons utilisées dans ce chapitre. Alors que la classe Tween() nous
permettait de définir une durée de mouvement, mais sans nous permettre de contrôler la
cadence, ici, nous nous appuyons sur une temporisation très précise.
Par ailleurs, ce script nous permet de découvrir la gestion de la classe Date(), également
abordée au chapitre 8, consacré aux tableaux, en gérant les jours de la semaine.
L’exemple suivant va combiner les classes Tween() et Timer() pour démontrer qu’on peut
exécuter un mouvement d’une durée précise à intervalle régulier.
import fl.transitions.*;
import fl.transitions.easing.*;
var compteur:Timer = new Timer(2500);
var mouvementBille:Tween;
function avancerBille(evt:TimerEvent) {
new Tween(billeMobile,"x",Regular.easeIn,billeMobile.x,Math.random()*500,1.5,true);
mouvementBille = new Tween(billeMobile,"y",Strong.easeOut,billeMobile.y,Math.
➥random()*280,2,true);
mouvementBille.addEventListener(TweenEvent.MOTION_FINISH,placerBille);
}
Remarque
Si vous ne connaissez pas la classe Timer(), consultez la fin du chapitre 3 qui traite de cette technique.
