Вот пара хитрых ловушек, в которые нельзя попасть:
Одна странная вещь в том, что в Chrome + Firefox событие MOUSE_LEAVE не отправляется для WMODE из OPAQUE
или TRANSPARENT
. Он просто не стреляет - мышкой вниз или вверх.
С WINDOW
работает нормально. Это заняло у меня много времени, чтобы узнать! гр ... http://bugs.adobe.com/jira/browse/FP-892
Во-вторых, убедитесь, что вы используете Event
в качестве типа параметра для вашего обработчика Event.MOUSE_LEAVE
, а не MouseEvent
. Если вы попытаетесь обработать MOUSE_LEAVE
с помощью e:MouseEvent
, вы получите ошибку, которую вы можете никогда не увидеть (если только вы не используете отладочный флэш-плеер). Это очень простая ошибка, потому что вы, вероятно, указываете всем другим обработчикам на тот же метод.
Вот что я делаю: (просто позвоните моему основному endDrag
с mouseLeave(e:Event)
stage.addEventListener(MouseEvent.MOUSE_MOVE, drag);
stage.addEventListener(MouseEvent.MOUSE_UP, endDrag);
stage.addEventListener(Event.DEACTIVATE, endDrag);
stage.addEventListener(Event.MOUSE_LEAVE, mouseLeave);
private function mouseLeave(e:Event):void
{
endDrag(new MouseEvent("MOUSE_LEAVE"));
}
public function endDrag(evt:MouseEvent):void
{
/// handle end drag
}