ActionScript 3 – Programmation séquentielle et orientée objet
242
Prenons cet exemple :
function masquerEtoile(evt:MouseEvent) {
etoileBlanche.visible=false;
}
Cette fonction ressemble à celles que nous venons d’étudier précédemment avec un paramètre, mais elle ne va pas être appelée comme nous l’avons vu. Elle sera invoquée par un
écouteur.
etoile.addEventListener(MouseEvent.MOUSE_DOWN,masquerEtoile);
Vous remarquez que l’appel ne contient pas de parenthèses : il est donc impossible de
passer simplement des paramètres à cette fonction. Voici tout de même une technique.
Utiliser des paramètres avec une fonction de rappel
La technique que nous allons aborder n’est pas conforme aux règles de programmation
en AS3, mais elle constitue une solution au problème posé et respecte les règles de la
programmation orientée objet.
Comme nous n’avons pas le droit d’écrire :
etoile.addEventListener(MouseEvent.MOUSE_DOWN,masquerEtoile,nominstance);
nous devons trouver une solution pour pouvoir personnaliser l’exécution de la fonction
selon l’occurrence cliquée.
Vous travaillerez généralement avec des tableaux ou des fichiers XML, dont vous allez
avoir besoin afin de récupérer un numéro d’index propre à une occurrence. Voici un
exemple qui montre comment obtenir cet index sans utiliser une boucle for().
1. Commencez par attribuer un numéro unique à chaque occurrence à partir desquelles
une action différente devra être réalisée.
etoile1.sonNumero=1;
etoile2.sonNumero=2;
2. Dans la fonction de rappel, vous allez utiliser la propriété currentTarget pour pouvoir
faire référence à la propriété sonNumero.
function masquerEtoile(evt:MouseEvent) {
trace(evt.currentTarget.sonNumero);
}
3. Ajoutez des écouteurs aux occurrences sur lesquelles vous souhaitez que l’utilisateur
interagisse (clic, survol, etc.).
etoile1.addEventListener(MouseEvent.MOUSE_DOWN,masquerEtoile);
etoile2.addEventListener(MouseEvent.MOUSE_DOWN,masquerEtoile);
Voilà ce qui se passe précisément lorsque l’utilisateur clique sur une occurrence.
242
Prenons cet exemple :
function masquerEtoile(evt:MouseEvent) {
etoileBlanche.visible=false;
}
Cette fonction ressemble à celles que nous venons d’étudier précédemment avec un paramètre, mais elle ne va pas être appelée comme nous l’avons vu. Elle sera invoquée par un
écouteur.
etoile.addEventListener(MouseEvent.MOUSE_DOWN,masquerEtoile);
Vous remarquez que l’appel ne contient pas de parenthèses : il est donc impossible de
passer simplement des paramètres à cette fonction. Voici tout de même une technique.
Utiliser des paramètres avec une fonction de rappel
La technique que nous allons aborder n’est pas conforme aux règles de programmation
en AS3, mais elle constitue une solution au problème posé et respecte les règles de la
programmation orientée objet.
Comme nous n’avons pas le droit d’écrire :
etoile.addEventListener(MouseEvent.MOUSE_DOWN,masquerEtoile,nominstance);
nous devons trouver une solution pour pouvoir personnaliser l’exécution de la fonction
selon l’occurrence cliquée.
Vous travaillerez généralement avec des tableaux ou des fichiers XML, dont vous allez
avoir besoin afin de récupérer un numéro d’index propre à une occurrence. Voici un
exemple qui montre comment obtenir cet index sans utiliser une boucle for().
1. Commencez par attribuer un numéro unique à chaque occurrence à partir desquelles
une action différente devra être réalisée.
etoile1.sonNumero=1;
etoile2.sonNumero=2;
2. Dans la fonction de rappel, vous allez utiliser la propriété currentTarget pour pouvoir
faire référence à la propriété sonNumero.
function masquerEtoile(evt:MouseEvent) {
trace(evt.currentTarget.sonNumero);
}
3. Ajoutez des écouteurs aux occurrences sur lesquelles vous souhaitez que l’utilisateur
interagisse (clic, survol, etc.).
etoile1.addEventListener(MouseEvent.MOUSE_DOWN,masquerEtoile);
etoile2.addEventListener(MouseEvent.MOUSE_DOWN,masquerEtoile);
Voilà ce qui se passe précisément lorsque l’utilisateur clique sur une occurrence.
