ActionScript 3 – Programmation séquentielle et orientée objet
66
La temporisation d’une action avec l’événement ENTER_FRAME
Fichier de référence : Chapitre3/evenement9.fla
Jusqu’à présent, tous les événements que nous avons abordés sont déclenchés par l’intervention de l’utilisateur qui clique sur le bouton de la souris ou qui presse une touche du
clavier. Toutes ces actions font donc suite à une action manuelle. Nous aimerions à
présent que des instructions soient exécutées non seulement sans que l’utilisateur ait à
cliquer sur la moindre occurrence présente sur la scène, mais également en continu.
Dans l’exemple suivant, nous allons faire tourner une roue crantée en exécutant en continu
l’instruction ci-dessous :
roue_inst.rotation+=3;
Pour celles et ceux qui connaissent l’ActionScript 1 et/ou 2, vous vous souvenez peutêtre du fameux onEnterFrame ! Nous allons faire appel au même événement, mais à travers
la structure du gestionnaire que nous commençons à bien connaître à présent :
function tournerRoue(evt:Event) {
roue_inst.rotation+=3;
}
stage.addEventListener(Event.ENTER_FRAME, tournerRoue);
En AS1/2, nous déterminions une occurrence pour y associer l’événement onEnterFrame.
Dans notre exemple, vous constaterez que nous avons fait appel à la propriété stage, mais
que nous aurions tout autant pu utiliser le nom d’instance roue_inst.
remove/addEventListener()
La notion que nous allons présenter ici n’a pas été abordée dans les exemples précédents :
cela n’était pas nécessaire. En effet, lorsqu’un clic est effectué sur une occurrence ou
lorsqu’une touche du clavier est pressée, les lignes d’instructions contenues dans la fonction
de rappel ne sont exécutées qu’une seule fois. En revanche, dans le cas de l’événement
ENTER_FRAME, il est indispensable de contrôler l’arrêt de l’exécution continue. Nous devons
alors procéder à l’annulation de l’écouteur d’événement comme dans l’exemple ci-dessous :
roue_inst.addEventListener(MouseEvent.CLICK,arreterRoue);
function arreterRoue(evt:Event) {
roue_inst.removeEventListener(Event.ENTER_FRAME, tournerRoue);
}
Dans cet exemple, l’utilisateur doit cliquer sur l’occurrence concernée par le mouvement
pour arrêter la rotation. Bien entendu, nous pourrions choisir une autre instance.
Fonctionnalités associées à l’événement ENTER_FRAME
Vous découvrirez dans le chapitre 9 de ce livre qu’un test dans un programme peut être
réalisé à différents moments de l’exécution d’un script ou d’une animation. Dans le cas
Précédent

- 94/426

Suivant