ActionScript 3 – Programmation séquentielle et orientée objet
124
Les deux paramètres que vous pouvez modifier pour obtenir un résultat différent sont :
• pasInitial : définissez une valeur différente de 0 pour obtenir une occurrence déjà en
mouvement au moment de l’appel au gestionnaire. Si vous définissez une valeur initiale
négative, vous obtiendrez un recul de l’occurrence avant qu’elle ne se mette à avancer.
• pasInitial+=0.1 : en augmentant ou en diminuant la valeur 0.1, vous obtiendrez un
mouvement plus ou moins accéléré.
Cette technique présente l’avantage d’être simple à déployer, mais il est conseillé d’ajouter
un test conditionnel pour bloquer la vitesse lorsqu’elle atteint une certaine valeur.
function deplacerBalle3(evt:Event) {
pasInitial+=0.1;
if(pasInitial>3) pasInitial = 3;
balle3.x+=pasInitial;
}
Pour optimiser notre code et ne pas exécuter en continu un test inutile, il serait préférable
d’utiliser cette fonction :
function deplacerBalle3(evt:Event) {
pasInitial+=0.1;
if(pasInitial>3) {
balle3.removeEventListener(Event.ENTER_FRAME,deplacerBalle3);
balle3.addEventListener(Event.ENTER_FRAME,deplacerBalle3Bis);
}
balle3.x+=pasInitial;
}
Il ne vous resterait plus qu’à redéfinir une fonction intitulée deplacerBalle3Bis qui ne
contiendrait qu’une seule ligne d’instruction : balle3.x+=pasInitial.
En modifiant le script initial, comme vous le propose l’exemple ci-dessous, vous obtiendrez
un mouvement saccadé :
function deplacerBalle3(evt:Event) {
pasInitial+=0.1;
if(pasInitial>3) pasInitial = 0.5;
balle3.x+=pasInitial;
}
Saccader un mouvement
Le script ci-dessous permet d’obtenir un mouvement saccadé, de façon plus ou moins
analogue à celle que nous venons de voir à la fin du développement précédent, mais nous
faisons appel à une fonction mathématique plus complexe. Référez-vous éventuellement
à la section Utilisation des fonctions Math.sin() et Math.cos() de ce chapitre pour une
explication plus détaillée.
balle4.addEventListener(Event.ENTER_FRAME,deplacerBalle4);
var coef:Number = 0;
function deplacerBalle4(evt:Event) {
coef+=0.07;
balle4.x+=Math.abs(Math.cos(coef))*2;
}
Précédent

- 152/426

Suivant