2009-04-11 4 views
1

Ich habe eine spezielle Leinwandklasse, die meine gesamte Bühne umfasst, und eine Reihe von Sprite-Hotspots auf der darunter liegenden Ebene. Wenn ich die Hotspots auf derselben Ebene wie meine Zeichenfläche positioniere, registriert die Zeichenfläche keine MOUSE_DOWN-Ereignisse, wenn sich meine Maus in einem der Hotspots befindet, da stattdessen die Hotspots ausgewählt werden. Wenn ich jedoch die Hotspots auf der unteren Ebene belasse, werden auf der Zeichenfläche alle MouseEvents behandelt. Gibt es eine Möglichkeit, dass MouseEvents mehr als eine Sache anvisiert, sodass sowohl die Arbeitsfläche als auch die Hotspots auf MouseEvents reagieren? (Die Zeichenfläche ist eine Bitmap-Zeichenklasse und die Hotspots sollen ausgelöst werden, wenn der Cursor sie berührt oder darauf klickt.)Flash-/Actionscript-Problem: Können MouseEvents mehr als eine Sache gleichzeitig ansprechen?

Antwort

1

ActionScript verfügt sowohl über Event-Bubbling als auch über Ereigniserfassung. Das bedeutet, dass Sie auf Ereignisse warten können, die Elemente oder untergeordnete Elemente enthalten. Sie müssen nur die richtige Art von Ereignis-Listener erstellen. Capturing fängt an, Ereignisse an den übergeordneten Elementen abzufangen, während es sich in der Kette der untergeordneten Elemente bewegt, bis es das Element erreicht, an dem das Ereignis ausgelöst wurde. Das Ereignissprudeln beginnt, auf Ereignisse beim Kind zu hören und geht zum Elternteil über.

Das dritte Argument zu addEventListener, useCapture, bestimmt, ob Sie blubbern oder erfassen möchten.

Es klingt, als ob Sie Event-Bubbling möchten, also möchten Sie useCapture auf false setzen. Ereignis-Listener werden für das untergeordnete Element und für das übergeordnete Element ausgelöst.

Event Capturing and Bubbling

+0

Thank you! Ich habe ein bisschen damit herumgespielt, aber es scheint, als ob es immer noch nur ein Ziel pro Ereignis erlaubt. Gibt es eine Möglichkeit, ein MouseEvent-Ziel zu einem Hotspot zu machen, die Funktion auszuführen und dann zur nächsten Ebene weiterzugehen? Wenn ich mit dem Zeichnen auf einem der Hotspots anfange, funktioniert die Zeichenfläche nicht. – Archagon

+0

Das Ziel ist das Element oder Objekt, auf das geklickt wurde. Es gibt nur ein Ziel und es ist im Ereignisobjekt verfügbar. Klingt so, als ob Sie immer noch Event Catching verwenden und nicht blubbern. Wenn Sie Event-Bubbling verwenden, wird es je nach Kontext genau das tun, was Sie wollen. –

+0

Ah! Ich habs. Ich fügte die Hotspots als Kinder der Bühne hinzu, nicht die Leinwand. Vielen Dank! – Archagon

1

apphacker es richtig gemacht.

Es gibt eine zwei andere Dinge, die Sie interessieren könnten:

die mouseChildren Eigenschaft und die getObjectsUnderPoint() Methode

viel Glück

Verwandte Themen