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
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.
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
- 1. Können Sie mehr als eine Datenbank gleichzeitig durchsuchen mit biopython
- 2. Was ist die RegularExpression, die mehr als eine Sache validiert?
- 3. Kann eine JVM mehr als ein Programm gleichzeitig ausführen?
- 4. Mehr als ein Papier-Toast gleichzeitig sichtbar
- 5. Ist es möglich, mehr als eine Animation gleichzeitig zu haben?
- 6. CORS - Ist es eine clientseitige Sache, eine serverseitige Sache oder eine Transportlevel-Sache?
- 7. Können zwei oder mehr Personen gleichzeitig ein Excel-Dokument bearbeiten?
- 8. mehr Funktionen gleichzeitig ausführen
- 9. Empfangen von Berührungsereignissen auf mehr als einer UIView gleichzeitig
- 10. Können Sie mehr als ein Element einer Liste gleichzeitig mit einem Listenverständnis in haskell erstellen?
- 11. Datenbank-Indizes: Eine gute Sache, eine schlechte Sache oder eine Zeitverschwendung?
- 12. OxyPlot MouseEvents Zugriff auf PlotModel
- 13. Es können nicht mehr als 100 Zeilen gleichzeitig mit dem Codezeichen
- 14. können nicht gleichzeitig schreiben, von mehr als 5 Fäden in Datei C++
- 15. Bildwähler mehr als eine
- 16. Gibt es eine Möglichkeit, eine Sound-Ressource (MediaPlayer) mehr als einmal gleichzeitig von derselben Instanz abzuspielen?
- 17. Schließen Sie mehr als einen View-Controller gleichzeitig
- 18. Omnet ++: Nachrichten von mehr als einem Knoten gleichzeitig senden
- 19. Django: Wie kann ich mehr als einen Datensatz gleichzeitig aktualisieren?
- 20. Starten Sie mehr als einen Android-Emulator gleichzeitig
- 21. Wie können Sie WPF- und Web-Apps am besten ansprechen?
- 22. Kann ein dauerhafter Abonnementkonsument nicht mehr als eine Nachricht gleichzeitig konsumieren?
- 23. Boxen, eine Sache der Vergangenheit?
- 24. Wie lässt sich eine Panel-Steuerung ansprechen?
- 25. Mysqldump mehr als eine Tabelle?
- 26. Warum kann ich mit With keyword nicht mehr als eine Spalte gleichzeitig aktualisieren?
- 27. Kann ich gleichzeitig über dasselbe DataContext-Objekt auf mehr als eine Tabelle zugreifen?
- 28. Flask validiert Dekorateur mehr Felder gleichzeitig
- 29. Laufen mehr als eine Klasse in Cherrypy
- 30. , was passiert, wenn ich verwenden mehr als eine dispatch_async
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
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. –
Ah! Ich habs. Ich fügte die Hotspots als Kinder der Bühne hinzu, nicht die Leinwand. Vielen Dank! – Archagon