Der vereinfachte Code:Welche Flash-Ereignisse können ein mouse_up-Ereignis unterbrechen und wie erkenne ich sie?
//triggered on MouseEvent.MOUSE_DOWN
private function beginDrag(e:MouseEvent):void
{
stage.addEventListener(MouseEvent.MOUSE_MOVE, drag);
stage.addEventListener(MouseEvent.MOUSE_UP, endDrag);
stage.addEventListener(Event.DEACTIVATE, endDrag);
contextMenu.addEventListener(ContextMenuEvent.MENU_SELECT, endDrag);
}
private function drag(e:MouseEvent):void
{
//do stuff
}
private function endDrag(e:Event):void
{
stage.removeEventListener(MouseEvent.MOUSE_MOVE, drag);
stage.removeEventListener(MouseEvent.MOUSE_UP, endDrag);
stage.removeEventListener(Event.DEACTIVATE, endDrag);
contextMenu.removeEventListener(ContextMenuEvent.MENU_SELECT, endDrag);
}
Ich bin mit ein paar Click-and-Drag-Techniken in meinem Flash-Code, und ich habe einige Lücken mit dem MOUSE_UP Ereignis bemerkt:
- es wird nicht ausgelöst werden wenn ein Kontextmenü aktiviert ist, während die Maus noch gedrückt gehalten wird.
- es wird nicht ausgelöst werden, wenn das Fenster (Alt + Tab oder ähnliches) deaktiviert
Meine Frage ist: Welches andere Ereignisse können das MOUSE_UP Ereignis möglicherweise unterbrechen und zu einem unerwarteten Verhalten führen?
Zusätzlich gibt es eine Möglichkeit, ContextMenuEvent.MENU_SELECT für alle Kontextmenüs generisch abzufangen, ohne die Listener zu jedem Kontextmenü manuell hinzufügen/entfernen zu müssen?
Wie und was ziehen Sie? Soll das ziehbare Objekt nur mit der Maus darüber bewegt werden oder bewegt es sich mit dem gedrückten linken btn nach dem Cursor, wohin auch immer es bewegt wird? Ich frage, weil imho für die meisten Fälle nur ein "MouseEvent.MOUSE_MOVE" Listener mit einem 'event.buttonDown' Check ist die Best Practice – www0z0k
@ www0z0k anscheinend haben Sie nicht einmal meinen Code gelesen. Ich würde dir -1 auf den Kommentar geben, wenn ich könnte. Ich habe bereits die Grundlagen der Drag-down ** das ist nicht das Problem ** das Problem ist, wenn einige externe Ereignis ausgelöst wird, die verhindert, dass das Ereignis 'MOUSE_UP' von Flash aufgefangen wird. – zzzzBov
Ich würde besser eine Antwort posten;) 'Event.MOUSE_LEAVE' wird ausgelöst, wenn das Kontextmenü aufgerufen wird, wenn die Maus mit linkem btn freigegeben die Bühne verlässt oder wenn btn freigegeben wird, wenn Maus von der Bühne – www0z0k