Les mouvements d’une occurrence sur la scène
CHAPITRE 5
123
Ralentir un mouvement
Dans l’exemple précédent, où le mouvement s’effectue à vitesse constante, le pas est fixé
à une valeur de 1,5 pixel. Pour ralentir un mouvement, il suffit alors de faire varier le pas
de déplacement de l’occurrence.
Une solution simple consiste à déplacer l’occurrence d’une valeur proportionnelle à la
distance qu’il lui reste à parcourir. Par exemple, avec un coefficient de proportionnalité
de 10 %, s’il faut la déplacer de 200 pixels, on commence par ajouter 20 pixels à sa
position (10 % de 200). Il reste alors 180 pixels à parcourir. Au deuxième passage, on
ajoutera 18 pixels à sa position (10 % de 180) et ainsi de suite, jusqu’à ce qu’il ne reste
que quelques pixels avant la position définitive de l’occurrence. Le script suivant met en
œuvre ce principe.
balle2.addEventListener(Event.ENTER_FRAME,deplacerBalle2);
function deplacerBalle2(evt:Event) {
balle2.x+=(480-balle2.x)*0.07;
}
Le calcul 480-balle2.x représente la distance que l’occurrence doit encore parcourir avant
d’atteindre la position située à 480 pixels du bord gauche de l’écran. Nous déplaçons
ensuite l’occurrence de 7 % de la distance restant à parcourir.
Pour être optimisé, ce script devrait contenir un test (dans la fonction deplacerBalle())
qui vérifierait si la distance restant à parcourir est inférieure à 1 pixel, pour éviter au
lecteur Flash de calculer des valeurs proches de 0.
if(480-balle2.x<1){
balle2.removeEventListener(Event.ENTER_FRAME,deplacerBalle2);
balle2.x=480;
}
Cette technique présente tout de même l’avantage de pouvoir modifier facilement le
pourcentage, et ainsi d’augmenter ou de diminuer la vitesse de déplacement. Il est également
très facile de déployer une telle méthode.
Accélérer un mouvement
De façon symétrique au ralentissement, il suffit d’augmenter le pas de déplacement d’une
occurrence pour obtenir un mouvement accéléré.
Nous allons incrémenter progressivement une variable.
balle3.addEventListener(Event.ENTER_FRAME,deplacerBalle3);
var pasInitial:Number = 0;
function deplacerBalle3(evt:Event) {
pasInitial+=0.1;
balle3.x+=pasInitial;
}
CHAPITRE 5
123
Ralentir un mouvement
Dans l’exemple précédent, où le mouvement s’effectue à vitesse constante, le pas est fixé
à une valeur de 1,5 pixel. Pour ralentir un mouvement, il suffit alors de faire varier le pas
de déplacement de l’occurrence.
Une solution simple consiste à déplacer l’occurrence d’une valeur proportionnelle à la
distance qu’il lui reste à parcourir. Par exemple, avec un coefficient de proportionnalité
de 10 %, s’il faut la déplacer de 200 pixels, on commence par ajouter 20 pixels à sa
position (10 % de 200). Il reste alors 180 pixels à parcourir. Au deuxième passage, on
ajoutera 18 pixels à sa position (10 % de 180) et ainsi de suite, jusqu’à ce qu’il ne reste
que quelques pixels avant la position définitive de l’occurrence. Le script suivant met en
œuvre ce principe.
balle2.addEventListener(Event.ENTER_FRAME,deplacerBalle2);
function deplacerBalle2(evt:Event) {
balle2.x+=(480-balle2.x)*0.07;
}
Le calcul 480-balle2.x représente la distance que l’occurrence doit encore parcourir avant
d’atteindre la position située à 480 pixels du bord gauche de l’écran. Nous déplaçons
ensuite l’occurrence de 7 % de la distance restant à parcourir.
Pour être optimisé, ce script devrait contenir un test (dans la fonction deplacerBalle())
qui vérifierait si la distance restant à parcourir est inférieure à 1 pixel, pour éviter au
lecteur Flash de calculer des valeurs proches de 0.
if(480-balle2.x<1){
balle2.removeEventListener(Event.ENTER_FRAME,deplacerBalle2);
balle2.x=480;
}
Cette technique présente tout de même l’avantage de pouvoir modifier facilement le
pourcentage, et ainsi d’augmenter ou de diminuer la vitesse de déplacement. Il est également
très facile de déployer une telle méthode.
Accélérer un mouvement
De façon symétrique au ralentissement, il suffit d’augmenter le pas de déplacement d’une
occurrence pour obtenir un mouvement accéléré.
Nous allons incrémenter progressivement une variable.
balle3.addEventListener(Event.ENTER_FRAME,deplacerBalle3);
var pasInitial:Number = 0;
function deplacerBalle3(evt:Event) {
pasInitial+=0.1;
balle3.x+=pasInitial;
}
