Flash: Правильно ли обрабатывать нажатия и перетаскивания за пределы браузера? - PullRequest
2 голосов
/ 31 мая 2010

Как правильно определить из Flash, когда кто-то запустил перетаскивание в браузере (например, событие MOUSE_DOWN), перетащил мышь за пределы окна браузера, отпустил кнопку, а затем перевел мышь назад браузер?

Например (при условии, что StackOverflow был приложением Flash):

альтернативный текст http://img.skitch.com/20100531-t99mni7s8sjs8ycqe5ebyaxphm.png

Я попробовал «очевидную» вещь, проверив event.buttonDown в обработчике MOUSE_MOVE, но даже если кнопка мыши нажата, event.buttonDown равно true на шаге 2 (выше).

Итак, есть ли другой способ проверить «реальное» состояние кнопки мыши? Или любой другой способ справиться с этой ситуацией?

Ответы [ 3 ]

2 голосов
/ 31 мая 2010

После небольшой копки в источнике Flex кажется, что они используют событие SandboxMouseEvent.MOUSE_UP_SOMEWHERE. Некоторое ограниченное тестирование предполагает, что это один из способов правильного обнаружения мыши вне Flash (хотя и с использованием Flex):

var sbroot:DisplayObject = Application.application.systemManager.getSandboxRoot();
sbroot.addEventListener(SandboxMouseEvent.MOUSE_UP_SOMEWHERE, handleDragComplete);
1 голос
/ 01 июня 2010

У меня была похожая проблема. Мое решение:

В конструкторе перетаскиваемых объектов у меня есть:

addEventListener(MouseEvent.MOUSE_DOWN, onStartDrag);

И в onStartDrag () я положил:

stage.addEventListener(MouseEvent.MOUSE_MOVE,onDrag);
stage.addEventListener(MouseEvent.MOUSE_UP, onDrop);

Вы получаете уведомление, когда мышь перемещается, вне нашего флэш-плеера, и уведомление MOUSE_UP, как только кнопка отпущена, также независимо от положения указателя мыши. Может быть не применимо в вашей конкретной ситуации, но работает для меня как обаяние. Не забудьте удалить MOVE и UP слушателей в onDrop ().

0 голосов
/ 31 мая 2010

Для случая, когда мышь покидает вашу рабочую область, попробуйте: MouseEvent.MOUSE_OUT

Возможно, вы сможете обнаружить MOUSE_UP в случае, если мышь вернули обратно.

Поведение мыши вне вашего флэш-приложения полностью зависит от операционной системы и браузера, и любой доступ к нему во Flash будет в лучшем случае несовместимым.

...