![]() |
|
||||||||||
|
|||||
|
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
|
NewMan_by, не понял, как 2 события MOUSE_DOWN ?
|
|
|||||
|
MerlinTwi,
на случай если над stage есть объекты с MOUSE_UP, которые будут перекрывать MOUSE_UP сцены cчитаю нужным немного добавить: package {
import flash.display.Sprite;
import flash.events.*;
dynamic public class Test extends Sprite {
function Test() {
buttonMode=true;
addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
}
private function onMouseDown(e:Event):void {
stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp, true);
}
private function onMouseUp(e:Event):void {
stage.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp, true);
if (e.target==this) {
trace("onRelease");
} else {
trace("onReleaseOutside");
}
}
}
}
__________________
Хороший отдых - половина работы. |
|
|||||
|
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
|
artcraft, вроде бы MOUSE_UP срабатывает, если отпускать кнопку мыши за пределами флешки.
|
|
|||||
|
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
|
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");
}
}
}
}
|
|
|||||
|
Регистрация: Aug 2005
Сообщений: 64
|
Цитата:
![]() |
|
|||||
|
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
|
Кстати, еще стоит учесть, что в методе mouseUp объект может быть уже удален с timeline и stage==null. Поэтому ссылку на stage стоит запомнить в методе mouseDown.
|
|
|||||
|
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
|
В дополнение нашего обсуждения, полезный совет от senocular
81. Глобальные события |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:11. |
|
|
« Предыдущая тема | Следующая тема » |
|
|