Les gestionnaires d'évenements

Portrait de titouille

Un gestionnaire d'évenement peut être implémenté de différentes manières, mais je vais expliquer la méthode MX 2004, qui permet de gérer les évenements des différents composants MX 2004, ces derniers étant construits autour d'une architecture à base d' "Event Dispatcher".

Tout d'abord, nous devons avoir un objet qui va servir de récepteur à une méthode de déclenchement.

genre :

var monObjet:Object = new Object ();

le mot clé "var" est important, car il permet de déclarer une variable uniquement dans la portée actuelle. ça veut dire que si on passe sur une autre portée qui n'est pas intégrée à la première, notre variable ne sera plus en mémoire. c'est ce qu'on appelle une déclaration "locale".

Ensuite, on va choisir quel est le déclencheur, ainsi que le type de déclenchement.

par exemple, pour un bouton, on pourra choisir le type de déclenchement "click". Mais il en existe pour quasiement tous les objets Flash.... gestionnaire onLoad, gestionnaire onPress, onRollOver, onEnterFrame, etc...

Donc, prenons l'exemple basique, le bouton et son gestionnaire "click" (déclenché sur click du bouton).

il faut maintenant implémenter la méthode "click" dans l'objet récepteur pour qu'il soit en mesure de lancer la méthode appropriée... (je n'ai d'ailleurs pas testé, mais on doit surement pouvoir déclarer un objet et lui affecter plusieurs méthodes, pour différents évenement de différents composants ou différents évenements d'un seul composant.)

donc la méthode :

monObjet.click = function (event:Object)
{
// mon code ici
trace (event.target);
}

Voilà. nous pouvons constater qu'il n'est plus question d'utiliser les dénominations "onXXX", tels que onPress ou onRollOver. nous ne passons plus que l'évenement : "press", "rollOver", etc...

La fonction comporte (toujours) un paramètre. le paramètre passé est l'évenement déclenché (event).

l'objet "event" à une propriété "target" (cible) qui correspond au déclencheur de l'évenement. Dans notre cas, c'est un bouton qui va déclencher l'évenement. Nous aurons donc une référence vers notre bouton dans la propriété "target".

Ce qui nous permet d'avoir une référence sur la portée du bouton, et de pouvoir remonter sur son "_parent" qui va correspondre à la scène, par exemple, et repartir sur d'autres composants. Car c'est ici que survient le problème de portée... Dans notre fonction, nous sommes dans la portée de l'objet. Cet objet n'a a priori aucune liaison avec la scène ou le clip dans lequel elle est codée. Cet objet à une portée "indépendante". C'est pour celà qu'on lui passe cet évenement, qui contient une référence vers le déclencheur.

Enfin, pour terminer, il ne reste plus qu'a abonner notre objet à notre déclencheur, et le tour est joué, il pourra intercepter les évenements déclenchés. Pour ce faire, il faut utiliser un code du type :

monBouton.addEventListener ("click", monObjet);

La méthode addEventListener prend 2 paramètres : le type d'évenement, sous forme de String, et une référence sur l'objet récepteur.

En espérant que tout ça soit compréhensible Smile





[...] données que je veux pour 1 seul item de ma liste, et les récupérer simplement grace au gestionnaire d’évenement. Comments » The URI t [...]