Gestion et propagation évènementielle
Bien que d’apparence plus verbeuse, la gestion des events en AS 3.0 est bien plus souple et adaptable que ce qu’elle ne l’était en AS 2.0.
Elle est basée sur un modèle évènementiel appelé DOM 3 Event Model.
Voici, ci-dessous, la signature de la mise en place d’un écouteur.
Mise en place de l’écouteur :
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void objet.addEventListener("evenement", ecouteur);
- Détails du package flash.events
AS 3.0 intègre la notion de propagation évènementielle, qui se décompose en 3 phases :
- La capture de l’évènement (useCapture true / false)
- La cible
- La remontée
Informations transmises
Sorry, either Adobe flash is not installed or you do not have it enabledCurrentTarget vs target – (type)
Sorry, either Adobe flash is not installed or you do not have it enabledfunction affiche_infos(evt:MouseEvent):void { sortie.text = "CT = " + evt.currentTarget.name sortie.appendText( "\nT = " + evt.target.name) } bleu.addEventListener(MouseEvent.MOUSE_DOWN,affiche_infos) vert.addEventListener(MouseEvent.MOUSE_DOWN,affiche_infos)
UseCapture
Sorry, either Adobe flash is not installed or you do not have it enabledthis.haut.addEventListener(MouseEvent.MOUSE_DOWN,action,true) this.bas.addEventListener(MouseEvent.MOUSE_DOWN,action,false) function action(evt:MouseEvent):void { sortie.text = "Target : " + evt.target.name sortie.appendText("\ncurrentTarget : " + evt.currentTarget.name) }
Soucis de détection rollover et rollout lorsque des enfants sont imbriqués
Lorsqu’un écouteur est placé sur un conteneur et que celui-ci contient des enfants… il est assez complexe de pouvoir détecter lorsque la souris quitte réellement l’ensemble…
Le mouse_out est capturé même lorsque la souris survole un enfant du conteneur… Il existe pour cela roll_out, voir l’article rollOver/rollOut vs mouseOver/mouseOut de Cédric Tabin sur AStorm Devblog à ce sujet.