![]() |
KeyboardEvent
Как его обработать нормально?
пока объект лежал на руте, вроде бы как работало. как только закопал его поглубже - всё сломалось и чиниться не хочет. В общем помогайте :) Описываю как сейчас: Есть класс. В нём в конструкторе написано: Код:
public function Example()Все события локальные, как сделать его глобальным? Выносить за пределы класса совсем не хочется. Давайте подумаем. |
все задают похожие вопросы, и я тоже задаю,
пока не нашел, единственное пока знаю, чтобы перехватывать события клавиатуры, спрайт который перехватывает должен быть в фокусе ввода - staget.focus = this; а вот как глобально - самому интересно; |
помоему решение таится в методе setCapture();
во всяком случае данный метод используется в drag&drop решениях для того чтобы слушать глобальные события мыши, но как импользоваться я пока не понял - дает исключение. |
а ларчик просто открывался....
stage.addEventListener(KeyboardEventType.KEY_DOWN, onKeyDown); |
как им пользоваться я понял с большей части. но вот только этот метод относиться к событиям мыши больше. когда создаёшь листенер там есть параметр useCapture. Так вот можно создать 2 разных события и обрабатываться они будут в разное время.
Посмотри мой тутор у майка в блоге про палитру. я там на курсорах юзал этот самый каптуре. попробуй сделать без них, и вытащи мышку за границы селектора. событие вызовится. но если стаит каптуре, то событие вызывается только поотпусканию мыши. |
Параметр useCapture ведь это лишь слушать capture-фазу... а setCaputure - это слушать все события мыши (и клавиатуры судя по хелпу) независимо от того в какой точки иерарихи спрайтов находимся. Что я не улавливаю связи. Приведи пример. Интересно.
|
ну блин. я же написал где пример смотреть. :)
"лень - двигатель прогресса" - это я понимаю, но затратить 2 минуты чтобы в блог самому зайти ... рррррррррр, а ещё новичков гоняете за лень. по существу. возвращаюсь к воспросу. весь прикол в том что stage почему-то доступен только из рута. Если я пытаюсь написать строчку глубже он пишет: TypeError: Error #1009: null has no properties. Я конечно всё понимаю .... но так во всех классах у меня. Я сперва писал в контрукторе и понял типа что возможно не видит из-за того что объект не добавлен на сцену. Вынес из конструктора, а фиг. всёравно одно и тоже. |
Цитата:
пример посмотрел, но.... ничего мне это не дало, видел до этого использование setCaputure() как я понял setCapture() можно вызывать между событиями MOUSE_DOWN и MOUSE_UP, в других случаях дает исключение. Чтото вроде - "у меня уже есть кепчур". по stage во вложенных - полная непонятность, даже не знаю.... вообще stage судя по описанию - это временно, предполагаю тут пока копать незачем, из вариантов решения -просто сделать геттер getStage() у рутового спрайта, или метод подписки на событие "глобального" кейбоарда .... |
да не в гетере дело ... тут иногда доступен а иногда нет. и как определить это самое иногда я не представляю :(
после сеткаптуре, события овер и оут перестают улавливаться .... |
думаю тут проблема в инициализации, в конструкторе может быть что нет еще stage, а вот в каком нибудь INIT или ADDED есть,
кстати верно, нужно проверить. |
| Часовой пояс GMT +4, время: 19:06. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.