Flex 3 - Applications Internet riches
© Groupe Eyrolles, 2008
130
Il est important de comprendre le mécanisme de propagation d’événement du framework Flex. Vous pouvez en effet choisir de gérer un événement sur l’objet de diffusion lui-même (le bouton) ou sur n’importe
lequel de ses conteneurs parents (TitleWindow ! Canvas ! Application).
C’est pourquoi le mécanisme de propagation événementielle de Flex se
décompose en trois phases :
1 une phase de capture ;
2 une phase de ciblage ;
3 une phase de remontée.
Examinons à présent un peu plus en détail ces trois phases, qui sont
ensuite modélisées sur la figure 8-6.
La phase de capture
La première phase de la propagation événementielle est donc la phase de
capture (capturing phase, en anglais). Lorsqu’un événement se déclenche,
Flex le diffuse en partant du conteneur le plus en amont (Application)
pour redescendre jusqu’au parent direct de l’objet auteur de la propagation (le bouton, dans notre exemple).
Ainsi, avant d’en arriver à l’objet cible (le bouton), l’application va contrôler d’abord tous les conteneurs parents, en amont (TitleWindow !
Canvas ! Application), et ainsi vérifier qu’ils ne proposent pas d’écouteurs (listeners) pour cette première phase. En d’autres mots, le premier
contrôleur Application sera vérifié en premier, puis ce sera le tour du conteneur Canvas, puis du conteneur TitleWindow et, en dernier, si aucun
écouteur spécifique n’a été positionné auparavant, ce sera le bouton.
Ce mécanisme permet de capturer l’événement durant sa descente et de
stopper sa propagation si nécessaire.
La phase de ciblage
La seconde phase porte le nom de phase de ciblage (targeting phase, en
anglais). En réalité, nous la connaissons déjà. C’est en effet lors de cette
étape que l’application initialise l’objet Event, vérifie si une fonction est
associée ou non à l’événement et la déclenche si besoin. La phase de
ciblage intervient donc quand l’événement a fini de parcourir tous les
objets parents et lorsqu’il a atteint l’objet ayant provoqué la propagation
(l’objet cible).
La phase de remontée
Quand la phase dite de « ciblage » est terminée, Flex va propager l’événement dans le sens opposé à celui de la phase de capture. Cette phase
EN SAVOIR PLUS Objet cible (nœud cible)
Dans ce mécanisme de propagation événementielle, l’objet cible (ou nœud cible) désigne toujours l’objet qui propage l’événement (donc, dans
notre exemple, le bouton).
EN SAVOIR PLUS Objet currentTarget
Pendant la phase de capture, Flex va vérifier tous
les conteneurs (ou nœuds) placés en amont de
l’objet cible, en partant du plus haut. En descendant, il va contrôler tous les conteneurs en commençant par le conteneur Application. À
chaque étape de la phase de capture, Flex va
définir un objet currentTarget qui est donc
l’objet en cours d’examen. À ne pas confondre
avec l’objet cible.
EXEMPLE Phase de ciblage
Pendant cette phase, notre bouton (pour garder
cet exemple) est donc à la fois l’objet/nœud cible
et l’objet currentTarget en cours d’examen.
© Groupe Eyrolles, 2008
130
Il est important de comprendre le mécanisme de propagation d’événement du framework Flex. Vous pouvez en effet choisir de gérer un événement sur l’objet de diffusion lui-même (le bouton) ou sur n’importe
lequel de ses conteneurs parents (TitleWindow ! Canvas ! Application).
C’est pourquoi le mécanisme de propagation événementielle de Flex se
décompose en trois phases :
1 une phase de capture ;
2 une phase de ciblage ;
3 une phase de remontée.
Examinons à présent un peu plus en détail ces trois phases, qui sont
ensuite modélisées sur la figure 8-6.
La phase de capture
La première phase de la propagation événementielle est donc la phase de
capture (capturing phase, en anglais). Lorsqu’un événement se déclenche,
Flex le diffuse en partant du conteneur le plus en amont (Application)
pour redescendre jusqu’au parent direct de l’objet auteur de la propagation (le bouton, dans notre exemple).
Ainsi, avant d’en arriver à l’objet cible (le bouton), l’application va contrôler d’abord tous les conteneurs parents, en amont (TitleWindow !
Canvas ! Application), et ainsi vérifier qu’ils ne proposent pas d’écouteurs (listeners) pour cette première phase. En d’autres mots, le premier
contrôleur Application sera vérifié en premier, puis ce sera le tour du conteneur Canvas, puis du conteneur TitleWindow et, en dernier, si aucun
écouteur spécifique n’a été positionné auparavant, ce sera le bouton.
Ce mécanisme permet de capturer l’événement durant sa descente et de
stopper sa propagation si nécessaire.
La phase de ciblage
La seconde phase porte le nom de phase de ciblage (targeting phase, en
anglais). En réalité, nous la connaissons déjà. C’est en effet lors de cette
étape que l’application initialise l’objet Event, vérifie si une fonction est
associée ou non à l’événement et la déclenche si besoin. La phase de
ciblage intervient donc quand l’événement a fini de parcourir tous les
objets parents et lorsqu’il a atteint l’objet ayant provoqué la propagation
(l’objet cible).
La phase de remontée
Quand la phase dite de « ciblage » est terminée, Flex va propager l’événement dans le sens opposé à celui de la phase de capture. Cette phase
EN SAVOIR PLUS Objet cible (nœud cible)
Dans ce mécanisme de propagation événementielle, l’objet cible (ou nœud cible) désigne toujours l’objet qui propage l’événement (donc, dans
notre exemple, le bouton).
EN SAVOIR PLUS Objet currentTarget
Pendant la phase de capture, Flex va vérifier tous
les conteneurs (ou nœuds) placés en amont de
l’objet cible, en partant du plus haut. En descendant, il va contrôler tous les conteneurs en commençant par le conteneur Application. À
chaque étape de la phase de capture, Flex va
définir un objet currentTarget qui est donc
l’objet en cours d’examen. À ne pas confondre
avec l’objet cible.
EXEMPLE Phase de ciblage
Pendant cette phase, notre bouton (pour garder
cet exemple) est donc à la fois l’objet/nœud cible
et l’objet currentTarget en cours d’examen.
