2010-10-26 16 views
0

Espérons qu'une petite question ici. J'ai mis en place une classe personnalisée "LayoutPage" (basée sur MovieClip) et j'essaye de créer un comportement "sélectionné".Enregistreur d'événements sur les enfants plutôt que sur les parents

Lorsque j'assigne mon "addEventListener (MouseEvent.CLICK, toggleSelection)" à partir de ma classe personnalisée, tout fonctionne comme prévu, en cliquant sur n'importe quel objet de cette classe affiche le comportement correct.

Maintenant, je voudrais étendre la fonctionnalité en ajoutant un modificateur de clavier pour étendre la sélection ou la remplacer. Pour cela, j'ai pensé à déplacer le "addEventListener" hors de la classe et le mettre dans le parent à la place (ma classe "PageLayout" où tous les "LayoutPage" vivent). Mais ce faisant, l'événement click ne s'inscrit plus sur la classe "LayoutPage" mais sur ses enfants individuels (icône Page, champ de texte Numéro de page, forme de page mise en évidence, etc.)

Quelqu'un peut-il expliquer pourquoi cela se produit? et comment je peux le contourner?

TIA

Répondre

1

Cela devrait se produire, peu importe où vous mettez votre addEventListener. C'est parce que mouseChildren est activé par défaut. Il est probablement préférable de désactiver l'intérieur de votre LayoutPage classe comme ceci:

myLayoutPage.mouseChildren = false; 

La question réelle est que l'utilisation utilisent probablement currentTarget pour référencer l'élément qui a été cliqué dans votre méthode de gestionnaire d'événements. Jetez un oeil sur les descriptions pour currentTarget et target pour avoir une bonne idée de comment ils diffèrent.

Une bonne option serait d'ajouter votre auditeur au PageLayout niveau, mais ajouter spécifiquement à chaque enfant LayoutPage comme ceci:

myLayoutPage.addEventListener(MouseEvent.CLICK, toggleSelection); 

De cette façon, vous pouvez simplement utiliser target dans vos gestionnaires . Mais il serait probablement préférable de toujours passer mouseChildren à false sur chacune de vos instances LayoutPage.

+0

Merci beaucoup! mouseChildren a fait l'affaire –