| MerlinTwi |
12.10.2006 15:27 |
artcraft, у меня за пределами браузера тоже срабатывает. Не срабатывает, только если удерживая кнопку мыши переключить фокус на другое приложение.
Кстати, если ловить mouseUp на стадии capture, то событие не срабатывает, если отпускать мышку на пустом месте stage, где нет никаких объектов.
В результате: если добавить проверку на потерю фокуса и необязательно чтобы у кнопки стояло buttonMode=true, то проверка будет выглядеть так:
Код:
package {
import flash.display.Sprite;
import flash.events.*;
dynamic public class Test extends Sprite {
private var checkMouseUp:Boolean;
function Test() {
addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
addEventListener(Event.DEACTIVATE, onDeactivate);
}
private function mouseDown(e:Event):void {
stage.addEventListener(MouseEvent.MOUSE_UP, mouseUp);
checkMouseUp=true;
}
private function onDeactivate(e:Event):void {
if (checkMouseUp) mouseUp(null);
}
private function mouseUp(e:Event):void {
checkMouseUp=false;
stage.removeEventListener(MouseEvent.MOUSE_UP, mouseUp);
if (e && (e.target==this || contains(e.target))) {
trace("onRelease");
} else {
trace("onReleaseOutside");
}
}
}
}
P.S. Вот и нафига, спрашивается, надо было им убирать событие ReleaseOutside?
|