2009-04-11 7 views
1

J'ai une classe de toile spéciale couvrant toute ma scène, et un tas de hotspots Sprite sur la couche ci-dessous. Si je mets les hotspots sur le même calque que mon canevas, le canevas n'enregistre pas les événements MOUSE_DOWN si ma souris se trouve dans l'un des hotspots, puisque les hotspots sont ciblés à la place. Cependant, si je garde les hotspots sur le calque inférieur, le canevas gère tous les MouseEvents. Existe-t-il un moyen de faire en sorte que MouseEvents cible plus d'une chose, de sorte que le canvas et les hotspots répondent à MouseEvents? (Le canevas est une classe de dessin bitmap et les zones sensibles sont censées se déclencher lorsque le curseur les touche ou clique dessus.)Problème Flash/Actionscript: est-ce que MouseEvents peut cibler plus d'une chose à la fois?

Répondre

1

ActionScript propose à la fois des bulles d'événements et la capture d'événements. Cela signifie que vous pouvez écouter les événements commençant par contenir des éléments ou des éléments enfants. Vous avez juste besoin de créer le bon type d'écouteur d'événement. La capture commence à capturer des événements sur les éléments parents lorsqu'elle descend la chaîne des enfants jusqu'à ce qu'elle atteigne l'élément où l'événement a été déclenché. Les bulles d'événements commencent à écouter les événements chez l'enfant et se déplacent vers le parent.

Le troisième argument à addEventListener, useCapture, détermine si vous souhaitez faire bouillonner ou capturer. Il semble que vous souhaitiez créer un bouillonnement d'événement, vous devez donc définir useCapture sur false. Les écouteurs d'événement seront déclenchés sur l'enfant et sur le parent.

Event Capturing and Bubbling

+0

Merci! J'ai joué un peu avec ça, mais il semble que cela ne permette toujours qu'une seule cible par événement. Est-il possible de faire d'une cible MouseEvent un hotspot, d'exécuter la fonction, puis de passer à la couche suivante? Si je commence à dessiner sur l'un des hotspots, la toile de dessin ne fonctionne pas. – Archagon

+0

La cible est l'élément ou l'objet sur lequel vous avez cliqué. Il n'y a qu'une seule cible, et elle est disponible dans l'objet événement. On dirait que vous utilisez toujours l'événement attraper, et non bouillonnant. Si vous utilisez des bulles d'événements, cela fera exactement ce que vous voulez en fonction du contexte. –

+0

Ah! Je l'ai. J'ajoutais les hotspots comme des enfants de la scène, pas la toile. Je vous remercie! – Archagon

Questions connexes