Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   временная блокировка всех событий мыши (http://www.flasher.ru/forum/showthread.php?t=128730)

kolypaev 15.08.2009 22:21

временная блокировка всех событий мыши
 
Здравствуйте

Не пинайте сильно, если уж мой вопрос совсем простой - в книгах и справочниках не нашел этого, в факе тоже нет.

Необходимо что бы в определенный момент программы, все обработчики для мыши перестали работать.

Воспользоваться этой функцией - removeEventListener(MouseEvent.CLICK, onMouseClick); - не получиться, т.к. мы не всегда знаем функцию обработчик.

необходимо:
- удалить все осбытия для мышы (клика, наведения)
- а так же узнать какие события привазаны к клику и наведению (что бы потом вернуть их на место)


Подскажите возможно есть какая-то функция типа:

removeEventListener(MouseEvent.CLICK);

Что бы удалить всё для клика мыши.

Можно конечно писать и без этого, но очень уж не хочется вводить в программу лишние переменыне.

FlashRabbit 15.08.2009 22:33

Такой функции нет, как вариант можно записывать слушателей в массив.

А проще всего накрыть сцену прозрачным спрайтом, ни один клик через него не пройдет.

kolypaev 15.08.2009 22:44

к сожалению, через прозрачный спрайт клики проходят

AL.exe 16.08.2009 00:58

Вообще-то нет, не проходят, если visible=false.

Однако, тут надо учитывать, что на клики мыши может быть подписан и stage - а тут уже спрайтом не обойтись.

MonkDead 16.08.2009 02:17

Цитата:

А проще всего накрыть сцену прозрачным спрайтом, ни один клик через него не пройдет.
Не совсем грамотный подход, в плане программирования.

Самый простой способ:
1) Засунут все в 1 контейнер;
2) Когда надо отключить события пишем этому контейнеру mouseChildren = false и mouseEnabled = false;
3) Когда надо включить mouseChildren = true и mouseEnabled = true

Более правильный подход все же через массив объектов (пробегаемся по нему подписываемся на события или отписываемся).

MerlinTwi 16.08.2009 10:01

Код AS1/AS2:

stage.focus = null;
stage.mouseChildren = false;
stage.tabChildren = false;



Часовой пояс GMT +4, время: 16:01.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.