2009-09-22 8 views

Répondre

1

Oui et non.

La seule façon est de simplement remplacer sa fonction dispatchEvent:

override public function dispatchEvent(event:Event):Boolean 
{ 
    // Do something with event. 
    return super.dispatchEvent(event); 
} 

Le problème, cependant, est que cela ne fonctionne pas toujours - parfois dispatchEvent n'est pas appelé si un objet enfant fait quelque chose. Cela ne fonctionnera pas non plus si vous ne souhaitez pas créer une classe spéciale pour chaque instance.

Une autre alternative consiste à itérer à travers un éventail de différents types d'événements:

var evtTypes:Array = [ MouseEvent.CLICK, MouseEvent.ROLL_OVER, 
         MouseEvent.MOUSE_DOWN... 
         Event.ADDED, Event.ADDED_TO_STAGE... etc.]; 

for(var i:int = 0; i < evtTypes.length; i++) 
{ 
    target.addEventListener(evtTypes[ i ], trace); 
} 

Le problème avec cette méthode est que vous ne serez pas en mesure de capturer des événements personnalisés, seuls les événements que vous avez dans votre liste . Je recommanderais certainement la deuxième méthode pour la plupart des problèmes d'apprentissage et de débogage.

Je suppose qu'une question plus importante, cependant, est "Que voulez-vous faire avec ces événements?" La plupart de la documentation répertorie tous les événements qu'un objet va distribuer: si vous faites défiler la documentation MovieClip, vous verrez un exemple.

0

Vous devez créer votre propre registre et y accéder de cette façon. Alors oui, il y a un moyen de le faire, mais non, pas facilement.

Questions connexes