Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Регистрация Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.03.2011, 02:18
easy.proger вне форума Посмотреть профиль Отправить личное сообщение для easy.proger Найти все сообщения от easy.proger
  № 1  
Ответить с цитированием
easy.proger

Регистрация: Jun 2010
Адрес: somewhere in the universe
Сообщений: 195
По умолчанию отключить на время у всех объектов реакцию на клавиатуру и мышь

Привет !
Как можно запретить всем классам реагировать на клавиатуру, кроме прохода по всем этим классам и отключением вручную

С мышью конечно можно поступить проще - кинуть спрайт на сцену чтобы тот перехватывал все клики, но хочется более удобного решения )

Старый 04.03.2011, 04:08
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 2  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Собственно а зачем? Вы и так можете повесить события клавы тока туда куда надо. Или вы вешаете всему что только попадается, а потом думаете, у кого бы убрать?))

Код AS3:
addEventListener(Event.ENTER_FRAME , frame);
function frame(e:Event) : void {  if(Keybord.KeyIsDown && _constant)
.... // так на вскиду если, надеюсь понятно о чем я. На ошибки внимания не обращайте - так задумано ))


Последний раз редактировалось in4core; 04.03.2011 в 04:11.
Старый 04.03.2011, 06:08
easy.proger вне форума Посмотреть профиль Отправить личное сообщение для easy.proger Найти все сообщения от easy.proger
  № 3  
Ответить с цитированием
easy.proger

Регистрация: Jun 2010
Адрес: somewhere in the universe
Сообщений: 195
Цитата:
Сообщение от in4core Посмотреть сообщение
Собственно а зачем? Вы и так можете повесить события клавы тока туда куда надо. Или вы вешаете всему что только попадается, а потом думаете, у кого бы убрать?))

Код AS3:
addEventListener(Event.ENTER_FRAME , frame);
function frame(e:Event) : void {  if(Keybord.KeyIsDown && _constant)
.... // так на вскиду если, надеюсь понятно о чем я. На ошибки внимания не обращайте - так задумано ))
Нет, я пишу компонент который при определенных обстоятельствах должен блокировать интерактив не давая другим компонентам обрабатывать клавиатуру.

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

На сколько я понял приведенный код производит "отлов" всех событий, а не блокировку, поправьте если не прав

Старый 04.03.2011, 08:20
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 4  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,652
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Цитата:
Сообщение от KeyboardEvent reference
To listen globally for key events, listen on the Stage for the capture and target or bubble phase
Отлавливаете событие в фазе захвата и останавливаете при помощи stopPropagation().

in4core, ENTER_FRAME тут совсем ни к месту.
__________________
тонкий тролль, осеянный благодатью

Старый 04.03.2011, 08:53
easy.proger вне форума Посмотреть профиль Отправить личное сообщение для easy.proger Найти все сообщения от easy.proger
  № 5  
Ответить с цитированием
easy.proger

Регистрация: Jun 2010
Адрес: somewhere in the universe
Сообщений: 195
Я так понимаю для этого нужно при старте проекта сразу повесить листенер на клавиатуру и флагами уже все решать

Получается все идет по цепочке ( оно и логично конечно ) если в первом хенделере мы прерываем событие то остальные его не получают, тут вопросов нету, но есть условие, должен быть "первый" хендлер который будет решать отдавать дальше сообщение или нет, а можно ли как то определить в любой момент любой хендлер первым ? типа
addEventListenerAt(,0) ? то есть насильно и в любой момент встать первым в цепочку ?

Старый 16.05.2012, 16:09
ZergMaster вне форума Посмотреть профиль Отправить личное сообщение для ZergMaster Найти все сообщения от ZergMaster
  № 6  
Ответить с цитированием
ZergMaster
 
Аватар для ZergMaster

Регистрация: May 2008
Адрес: Питер
Сообщений: 385
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
господа, имею тот же вопрос.
Ситуация такая:
Есть главная флешка, в которой мы можем выбрать игру.
Есть второстепенная (флешка-игра), которая загружается в эту главную. Во второстепенной существуют некие листенеры, неизвестно куда накинутые, позволяющие управлять игрой с клавиатуры.
Мне в какой-то момент из внешней флешки-родителя нужно отключить возможность управлять флешкой-ребенком с клавиатуры. Как это сделать, ума не приложу?.. Хотя прикладывал уже и так, и эдак. Пробовал кидать KeyboardEvent.KEY_DOWN на stage флешки-родителя и делать stopPropagation но ничего не останавливается... все идет дальше. Есть может какие-нибудь способы тупо заблочить клавиатуру у кого-нибудь?
__________________
while(live()) { hope(); }


Последний раз редактировалось ZergMaster; 16.05.2012 в 16:16.
Старый 16.05.2012, 17:06
Партизан вне форума Посмотреть профиль Отправить личное сообщение для Партизан Найти все сообщения от Партизан
  № 7  
Ответить с цитированием
Партизан
 
Аватар для Партизан

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
Написал же Gaen выше.

Добавлено через 5 минут
Сорри, не внимательно прочел... Приоритет ставили? useCapture?

Старый 16.05.2012, 17:51
ZergMaster вне форума Посмотреть профиль Отправить личное сообщение для ZergMaster Найти все сообщения от ZergMaster
  № 8  
Ответить с цитированием
ZergMaster
 
Аватар для ZergMaster

Регистрация: May 2008
Адрес: Питер
Сообщений: 385
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
Партизан, хм... Приоритет стоит 1, а вот useCapture false. Это на что влияет? (хелп читал, но там как-то заковыристо написано.))
Код AS3:
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownH, false, 1);
__________________
while(live()) { hope(); }

Старый 16.05.2012, 18:29
Партизан вне форума Посмотреть профиль Отправить личное сообщение для Партизан Найти все сообщения от Партизан
  № 9  
Ответить с цитированием
Партизан
 
Аватар для Партизан

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
попробуйте true и приоритет, скажем 1000
Да, и еще естественно KEY_UP порежте

Старый 16.05.2012, 18:34
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 10  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
чтобы словить раньше надо регистрировать свои лисенеры до загрузки с приоритетом int.MAX_VALUE в фазе захвата, и там делать stopImmediatePropogation и можно ещё preventDefault до кучи. Тогда даже если потом кто-то зарегает лисенера с тем же приоритетом потом то он обрабатываться будет всё равно позднее.
__________________
:)

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:02.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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