Wie kann Sie erkennen, wenn die Maus die Bühne verlässt, die in ActionScript 2?
Ich habe das Pech zu haben, um downport einige ActionScript-3-code zu ActionScript 2 und ich habe ein problem mit der Erkennung, wenn die Maus die Bühne verlässt.
In ActionScript 3 gibt es eine Veranstaltung namens Event.MOUSE_LEAVE
, die verwendet werden können, um zu erkennen, wenn die Maus die Bühne verlässt, aber es gibt keine Entsprechung in ActionScript 2 soweit ich das sehen kann.
Wie würden Sie am besten emulieren die gleiche Funktionalität?
Hören für die Bewegung der Maus und überprüfen Sie die Maus-Koordinaten gegen die Grenzen der Bühne nicht funktioniert, da die Koordinaten der Maus nicht mehr aktualisiert, wenn die Maus die Bühne verlässt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit math zu schätzen, wenn die Maus werden out of bounds:
(Eine Implementierung entlang der Linien von Theo ' s von option 3.)
Ich habe nicht gefunden, einen zuverlässigen Weg, dies zu tun in AS2 (bei einigen Browsern werden Sie auch immer Maus aktualisiert, wenn die Maus außerhalb der app). Also, was ich normalerweise tun ist, überprüfen Sie, ob sich die Maus außerhalb des äußeren 10 oder 20px Rand der Anwendung, wenn dem so ist, betrachte ich das als MOUSE_LEAVE. Es ist wahrscheinlich auch besser zu hören, für die MOUSE_MOVE, anstatt das überprüft jeden frame, da Sie vielleicht vermissen ein paar updates, wenn Sie eine niedrigere framerate.
Ist es auch möglich, das Kontextmenü aufzurufen, bewegen Sie die Maus außerhalb und klicken Sie dann komplett unter Umgehung der ganze check oben (oder sogar bewegen Sie die Maus sehr schnell an der Grenze), so dass ich oft fügen Sie einen timer, der feuert, wenn die Maus nicht bewegt, etwa 2-3 Sekunden.
Es ist nicht besonders robust, aber es ist das beste ich habe es geschafft.
Ich glaube, ich habe einmal diese Runde, indem Sie unsichtbare Schaltflächen an den Rändern der Bühne und mit Ihren rollout-Funktion. denke, dies funktioniert, solange Sie sich nicht bewegen Sie die Maus zu schnell! Ferne Erinnerungen.
Gibt es drei Kategorien von Lösungen für dieses problem:
Überprüfen Sie die Maus-position gegen die Bühne Grenzen (z.B. Mayhew ' s Antwort). Dies ist die naive Lösung, und hat es geklappt ich hätte nie die Frage gestellt. Das problem ist, dass die Koordinaten der Maus nicht mehr aktualisiert, wenn die Maus die Bühne verlässt, und Sie behalten Ihre Letzte position, die ist immer auf der Innenseite der Bühne.
Erstellen Sie einen Rahmen um die Bühne und erkennt die Maus Bewegungen innerhalb dieser Grenze (zum Beispiel grapefrukt ' s Antwort. Funktioniert wenn der Rand ist sehr breit, aber Sie bekommen eine Menge von false positives-und wenn die Maus nicht mehr innerhalb der Grenze und dann zu bewegen beginnt wieder die falsche Maus eingeben. Auch Sie leidet unter den gleichen Problemen wie die 1, kann die Maus immer bewegen schnell genug, dass Sie nicht erkennen, es bewegt über die Grenze.
Verfolgen Sie die Richtung und Geschwindigkeit der Maus, so dass, wenn Sie aufhören, erhalten Sie die Maus bewegen, Ereignisse, die Sie berechnen können, wo die Maus sein sollten und sehen, ob das der Punkt ist außerhalb der Bühne. Täuschen kann in Rand-Fällen, aber funktioniert viel besser als 1 und 2. Erfordert viel mehr code aber.