отключить на время у всех объектов реакцию на клавиатуру и мышь
Привет !
Как можно запретить всем классам реагировать на клавиатуру, кроме прохода по всем этим классам и отключением вручную С мышью конечно можно поступить проще - кинуть спрайт на сцену чтобы тот перехватывал все клики, но хочется более удобного решения ) |
Собственно а зачем? Вы и так можете повесить события клавы тока туда куда надо. Или вы вешаете всему что только попадается, а потом думаете, у кого бы убрать?))
Код AS3:
|
Цитата:
Пример: Есть куча разных компонентов, у всех у них есть хоткеи, я пишу диалог который при своем отображении должен блокировать весь интерактив. На сколько я понял приведенный код производит "отлов" всех событий, а не блокировку, поправьте если не прав |
Цитата:
in4core, ENTER_FRAME тут совсем ни к месту. |
Я так понимаю для этого нужно при старте проекта сразу повесить листенер на клавиатуру и флагами уже все решать
Получается все идет по цепочке ( оно и логично конечно ) если в первом хенделере мы прерываем событие то остальные его не получают, тут вопросов нету, но есть условие, должен быть "первый" хендлер который будет решать отдавать дальше сообщение или нет, а можно ли как то определить в любой момент любой хендлер первым ? типа addEventListenerAt(,0) ? то есть насильно и в любой момент встать первым в цепочку ? |
господа, имею тот же вопрос.
Ситуация такая: Есть главная флешка, в которой мы можем выбрать игру. Есть второстепенная (флешка-игра), которая загружается в эту главную. Во второстепенной существуют некие листенеры, неизвестно куда накинутые, позволяющие управлять игрой с клавиатуры. Мне в какой-то момент из внешней флешки-родителя нужно отключить возможность управлять флешкой-ребенком с клавиатуры. Как это сделать, ума не приложу?.. Хотя прикладывал уже и так, и эдак. Пробовал кидать KeyboardEvent.KEY_DOWN на stage флешки-родителя и делать stopPropagation но ничего не останавливается... все идет дальше. Есть может какие-нибудь способы тупо заблочить клавиатуру у кого-нибудь? |
Написал же Gaen выше.
Добавлено через 5 минут Сорри, не внимательно прочел... Приоритет ставили? useCapture? |
Партизан, хм... Приоритет стоит 1, а вот useCapture false. Это на что влияет? (хелп читал, но там как-то заковыристо написано.))
Код AS3:
|
попробуйте true и приоритет, скажем 1000
Да, и еще естественно KEY_UP порежте |
чтобы словить раньше надо регистрировать свои лисенеры до загрузки с приоритетом int.MAX_VALUE в фазе захвата, и там делать stopImmediatePropogation и можно ещё preventDefault до кучи. Тогда даже если потом кто-то зарегает лисенера с тем же приоритетом потом то он обрабатываться будет всё равно позднее.
|
Часовой пояс GMT +4, время: 21:02. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.