ActionScript 3 – Programmation séquentielle et orientée objet
110
Reprenons à présent le code initial en faisant appel à l’objet evt.currentTarget pour ne
pas avoir à faire référence au nom d’une occurrence et ainsi pouvoir réutiliser la fonction
de rappel.
curseur.addEventListener(MouseEvent.CLICK,deplacerDroite);
function deplacerDroite(evt:Event) {
setChildIndex(evt.currentTarget,3);
}
À la publication de l’animation, nous obtenons un message d’erreur !
Ce message d’erreur signifie que evt.currentTarget n’est pas un DisplayObject, c’est-à-dire
un type d’objet auquel s’attend la méthode setChildIndex(). Nous devons donc modifier
notre code de la façon suivante :
curseur.addEventListener(MouseEvent.CLICK,deplacerDroite);
function deplacerDroite(evt:Event) {
setChildIndex(DisplayObject(evt.currentTarget),3);
}
L’ajout de la fonction DisplayObject() permet de convertir le type d’un objet en DisplayObject.
Elle est donc nécessaire pour combiner evt.currentTarget et la méthode setChildIndex().
Voici un dernier exemple qui met en évidence l’aspect pratique de ne disposer que d’une
seule fonction pour plusieurs objets d’écoute.
Figure 4-31
L’occurrence située en arrière-plan s’intitule curseur et se trouve à l’index 0 avant l’exécution du script.
Elle se situe à l’index 3 après l’exécution du script.
1118: Contrainte implicite d’une valeur du type statique Object vers un type
peut-être sans rapport flash.display:DisplayObject.
Information
Essayez de tracer evt.currentTarget en exécutant la ligne d’instruction trace(evt.currentTarget) et vous découvrirez qu’il s’agit d’un objet de type MovieClip. Il est surprenant de découvrir qu’un
MovieClip n’est pas, par défaut, un objet d’affichage. Rappelons peut-être qu’un MovieClip possède une
classe éponyme qui hérite de la classe DisplayObjectContainer (qui hérite elle-même de la classe
DisplayObject).
Précédent

- 138/426

Suivant