Flux d'événements

Flash Player distribue des objets événement dès que survient un événement. Si la cible d'événement ne se trouve pas dans la liste d'affichage, Flash Player distribue l'objet événement directement à la cible. Par exemple, Flash Player distribue l'objet événement Progress directement à un objet URLStream. Cependant, si la cible d'événement se trouve dans la liste d'affichage, Flash Player distribue l'objet événement à la liste d'affichage, dans laquelle l'objet chemine jusqu'à atteindre la cible d'événement.

Le flux d'événements représente le parcours que suivra un objet événement dans la liste d'affichage. Cette liste s'organise de manière hiérarchique, pour constituer une arborescence. Au sommet de la liste d'affichage se trouve la scène, un conteneur d'objet d'affichage spécial qui lui sert de racine. La scène, représentée par la classe flash.display.Stage, est uniquement accessible via un objet d'affichage. Chaque objet d'affichage présente une propriété nommée stage, qui renvoie à la scène de cette application.

Lorsque Flash Player distribue un objet d'événement, celui-ci effectue un aller-retour entre la scène et le nœud cible. Selon la définition de la spécification d'événements DOM, le nœud cible est le nœud qui représente la cible d'événement. En d'autres termes, le nœud cible est l'objet de la liste d'affichage au niveau duquel est survenu l'événement. Par exemple, si l'utilisateur clique sur un objet de la liste d'affichage appelé child1, Flash Player distribue un objet événement dont le nœud cible est child1.

Le flux d'événements se décompose en trois phases. La première correspond à la phase de capture, qui comprend tous les nœuds de la scène jusqu'au parent du nœud cible. La deuxième partie est appelée la phase cible, qui comprend uniquement le nœud cible. La troisième partie s'appelle la phase de propagation vers le haut. Elle comprend les nœuds rencontrés lors du cheminement du parent du nœud cible jusqu'à la scène.

Le nom de ces phases prend tout son sens si vous envisagez la liste d'affichage comme une hiérarchie verticale dont le sommet est la scène, comme illustré par le schéma suivant :


Schéma représentant une liste d'affichage hypothétique, dont le nœud supérieur nommé Stage contient un nœud nommé Parent Node, lui-même contenant deux nœuds appelés Child1 Node et Child2 Node.

Si un utilisateur clique sur Child1 Node, Flash Player distribue un objet événement dans ce flux d'événements. Comme le montre l'illustration suivante, le parcours de l'objet commence à Stage. L'objet descend ensuite jusqu'à Parent Node, puis vers Child1 Node. Il se propage alors vers le haut jusqu'à Stage, en repassant par Parent Node.


Illustration de la propagation vers le haut. La phase de capture débute à la scène puis chemine par le nœud parent. La phase cible se produit au niveau du nœud Child1. La phase de propagation vers le haut repart vers la scène via le nœud parent.

Dans cet exemple, la phase de capture comprend Stage et Parent Node pendant le trajet descendant initial. La phase cible comprend le temps passé au nœud Child1 Node. La phase de propagation comprend les nœuds Parent Node et Stage, qui se trouvent sur le chemin du retour vers le nœud racine.

Le flux d'événements contribue au renforcement du système de gestion des événements par rapport aux versions précédentes d'ActionScript. Dans ces dernières, le flux d'événements est inexistant, ce qui signifie que les écouteurs d'événements s'ajoutent uniquement à l'objet qui génère l'événement. Dans ActionScript 3.0, vous pouvez ajouter des écouteurs d'événements aussi bien à un nœud cible qu'à tout autre nœud du flux d'événements.

Cette possibilité d'ajouter des écouteurs d'événements tout au long du flux d'événements s'avère particulièrement utile lorsqu'un composant d'interface comprend plusieurs objets. Par exemple, un objet bouton contient souvent un objet texte qui sert de libellé au bouton. Sans la possibilité d'ajouter un écouteur au flux d'événements, il faudrait en ajouter un à l'objet bouton et un à l'objet texte pour être sûr d'être averti des événements de clic survenant à tout endroit du bouton. Le flux d'événements vous permet, au contraire, de placer un seul écouteur d'événements sur l'objet bouton afin de gérer les événements de clic, qu'ils se produisent sur l'objet texte ou sur des zones de l'objet bouton non couvertes par l'objet texte.

Cependant, certains objets événement ne participent pas aux trois phases du flux d'événements. Certains types d'événements, tels que enterFrame et init, sont distribués directement au nœud cible et ne participent ni à la phase de capture, ni à la phase de propagation vers le haut. D'autres événements peuvent cibler des objets qui ne font pas partie de la liste d'affichage, par exemple les événements distribués à une instance de la classe Socket. Ces objets événements aboutissent directement à l'objet cible, sans participer à la phase de capture et de propagation vers le haut.

Pour savoir comme se comporte un type d'événement particulier, vous pouvez consulter la documentation de l'API ou examiner les propriétés de l'objet événement. Cette dernière méthode est décrite à la section suivante.


Flash CS3

 

M'envoyer un message électronique lorsque des commentaires sont ajoutés à cette page | Rapport de commentaire

Page en cours: http://livedocs.adobe.com/flash/9.0_fr/main/00000137.html