PDA

Просмотр полной версии : К чему подписаться чтобы слушать KeyboardEvent от любого компонента?


†‡Paladin‡†
04.08.2008, 22:07
Всем привет. Ваяю hot keys. Собственно уже все красиво сделал, осталось узнать сабж. Непонятно почему нельзя подписаться на Application (можно но диспатчит только когда на нем стоит фокус). Stage тоже нехочет. Подписался пока к канве, но и в этом случае ловит не всегда.

JesterAntik
05.08.2008, 11:02
насколько я помню документацию клавиатурные события отправляют не все компоненты. И если на таком компаненте фокус до просто не будет этого события=( Хотя сам только мельком зацепил эту проблему. Кто-нибудь опровергните мое мнение...

litebox
23.04.2010, 20:58
†‡Paladin‡†, 5 лет прошло, как решил проблему? :))
На самом деле столкнулся с аналогичной задачей: тоже делаю HotKeys, которые деляться на 2 типа:
1. "локальные", для своего собственного компонента (расширил его интерфейсом mx.managers.IFocusManagerComponent) и все отрабатывает замечательно;
2. "глобальные" - тут мне нужна обработка клавиши ESCAPE - мой компонент - редактор карт для игры, и хотелось сделать бы так, что бы при нажатии ESCAPE снималось выделение с игровых объектов. Когда фокус находится на моем компоненте КАРТА - все работе хорошо, но если фокус находиться на ButtonBar'е или на заголовке Accordion'на - то событие до моего слушателя (которого я вешал и на stage, и на this (главный класс, Application)) не доходит. Видимо эти кнопки "душат" событие, и наверх уже ничего не доходит :(

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