Erkennt Maus verlassen die Bühne und ziehen Sie gleichzeitig in Actionscript 3
Event.MOUSE_LEAVE ist groß in Actionscript 3, aber es scheint nicht zu feuern, wenn der Benutzer hält mit Ihrer linken (oder rechten) Maustaste gedrückt.
Gibt es eine Möglichkeit zu erkennen, verlässt die Maus das Flash-Film, während die Maustaste gedrückt ist? Oder, wenn es freigegeben wird, die außerhalb des flash-Films?
InformationsquelleAutor der Frage Adam Harte | 2009-10-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
All das erfordert ein bisschen ein hack. Sie haben, um zu speichern, ob die Maus von der Bühne oder nicht und handle die
Event.MOUSE_LEAVE
Ereignis entsprechend. Doing es auf diese Weise haben Sie alle die normalen Maus-Funktionen, einschließlich nicht zu stoppen, die ziehen nur weil die Maus ging von der Bühne. Da der Benutzer möglicherweise kommen auf die Bühne zurück und weiter ziehen, wartet er bis der Benutzer die Maustaste loslässt entweder auf oder hinter der Bühne.Dem hack ist, dass die
MOUSE_LEAVE
Ereignis, nicht dasMOUSE_UP
Ereignis wird ausgelöst, wenn die Maustaste losgelassen wird, von der Bühne, so dass Sie haben, um zu verfolgen, ob oder nicht die Maus wurde bereits von der Bühne, wenn es veröffentlicht wurde.nach dem ziehen fertig ist Sie natürlich entfernen möchten alle Ereignis-Listener Zusammenhang mit der Erkennung von Maus-outs-und-Maus-ups aber, dass code wurde zur besseren Lesbarkeit.
InformationsquelleAutor der Antwort greggreg
hier ist was ich tun:
InformationsquelleAutor der Antwort Michal M
Hier ein paar knifflige fallen nicht zum Opfer fallen :
Eine bizarre an der Sache ist, dass in Chrome + Firefox, die MOUSE_LEAVE-Ereignis nicht ausgelöst, für eine WMODE von
OPAQUE
oderTRANSPARENT
. Es funktioniert einfach nicht Feuer - Maus nach unten oder oben.Mit
WINDOW
es funktioniert gut. Dass man mir dauerte eine lange Zeit, um es herauszufinden! grr... http://bugs.adobe.com/jira/browse/FP-892Zweite, stellen Sie sicher, dass Sie mit
Event
für den parameter type für IhreEvent.MOUSE_LEAVE
handler und nichtMouseEvent
. Wenn Sie versuchen, mitMOUSE_LEAVE
mite:MouseEvent
erhalten Sie eine Fehlermeldung, die Sie vielleicht nie sehen (es sei denn, Sie verwenden den debug flash player). Es ist sehr leicht Fehler zu machen, weil Sie wahrscheinlich zeigen alle anderen Handler, um die gleiche Methode.Hier ist was ich tun: (einfach anrufen mein main
endDrag
ausmouseLeave(e:Event)
InformationsquelleAutor der Antwort Simon_Weaver
Stieß ich auf ein ähnliches problem in einem PDF-Typ-viewer, ich hatte zu bauen in eine Flex-Anwendung. Ich wollte die Pfanne Funktionen immer noch funktionieren, auch wenn die Maus die Bühne verlassen oder das browser-Fenster. Hier ist, wie ich das bewerkstelligen, ich habe mich verändert, den code zu entfernen Verweise auf Flex-Framework-Klassen, dies sollte für alle AS3-Projekt. Auf
mouseDown
ich würde das tracking diese Werte auf einem timer._client
kann jedeflash.display.DisplayObject
im Ziel-Stadium. In meinem Fall war es eine Flexmx.controls.SWFLoader
Objekt, aber in deinem Fall nehme ich an, es wäre die drag-Ziel:Den
stage.mouseX
undstage.mouseY
Werte sind definiert, die relativ zur Bühne, ob die Maus in die Bühne oder sogar im browser-Fenster (zumindest im Flash-Player 10 habe ich noch nicht getestet, in früheren Versionen von flash player). Um zu sehen, ob die Maus außerhalb der Bühne nur testen und sehen, ob diese Werte sich innerhalb der Bühne, etwa so:EDIT: Wie zu erkennen, eine
mouseUp
Veranstaltung außerhalb der Bühne, wenn Sie einen listener registrieren, auf der Bühne, ein mouseUp ausgestellt werden, auch wenn das Ereignis Auftritt außerhalb der Bühne oder im browser. Hier ist der code, wie ich die Ereignisse verarbeiten Funktion für die Referenz. Die_client
- Objekt kann eine beliebigeflash.display.DisplayObject
:EDIT: Entfernt Verweise auf Flex-framework-Klassen
EDIT: ich erinnere mich, dass es einige Probleme mit Ereignisse, die außerhalb des browser-Fenster, wenn die Anwendung ausgeführt wird, in den Safari-browser auf Mac OSX. Stellen Sie sicher, testen Sie diesen code in browser wenn Sie es verwenden. Dies war nicht ein problem in meiner Anwendung, so dass ich nicht schauen Sie in die Ausgabe weiter.
InformationsquelleAutor der Antwort Ryan Lynch
Wenn Ihr etwas tun, wo Sie sind, ziehen Sie eine MovieClip-dies scheint schön zu arbeiten.
BEARBEITEN - never mind
InformationsquelleAutor der Antwort Allan
Nicht, dass ich wüsste
Veranstaltung.MOUSE_LEAVE passiert, wenn Sie release außerhalb.
mehr info hier
http://blog.zupko.info/?p=3
sehen JIMISAACS Kommentar.
InformationsquelleAutor der Antwort SketchBookGames
InformationsquelleAutor der Antwort Jileni Bouguima
Hier ist die richtige Antwort. Custom-Klasse übergeben Sie eine DisplayObject, und ziehen Sie es bis zum " mouse-up-oder mouse-out-of-Phase. Passen Sie auf:
InformationsquelleAutor der Antwort Bill Kotsias