|
|
|||||
стервочка (я мужик)
|
KeyboardEvent
Как его обработать нормально?
пока объект лежал на руте, вроде бы как работало. как только закопал его поглубже - всё сломалось и чиниться не хочет. В общем помогайте Описываю как сейчас: Есть класс. В нём в конструкторе написано: public function Example() { ... this.addEventListener(KeyboardEventType.KEY_DOWN, this.onKeyDown); } private function onKeyDown(event:KeyboardEvent):Void { trace(event.keyCode); event.updateAfterEvent(); } Все события локальные, как сделать его глобальным? Выносить за пределы класса совсем не хочется. Давайте подумаем. Последний раз редактировалось Antares; 28.12.2005 в 03:51. |
|
|||||
МЕГАФЛЭШЕР
Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
|
все задают похожие вопросы, и я тоже задаю,
пока не нашел, единственное пока знаю, чтобы перехватывать события клавиатуры, спрайт который перехватывает должен быть в фокусе ввода - staget.focus = this; а вот как глобально - самому интересно; |
|
|||||
МЕГАФЛЭШЕР
Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
|
помоему решение таится в методе setCapture();
во всяком случае данный метод используется в drag&drop решениях для того чтобы слушать глобальные события мыши, но как импользоваться я пока не понял - дает исключение. |
|
|||||
МЕГАФЛЭШЕР
Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
|
а ларчик просто открывался....
stage.addEventListener(KeyboardEventType.KEY_DOWN, onKeyDown); |
|
|||||
стервочка (я мужик)
|
как им пользоваться я понял с большей части. но вот только этот метод относиться к событиям мыши больше. когда создаёшь листенер там есть параметр useCapture. Так вот можно создать 2 разных события и обрабатываться они будут в разное время.
Посмотри мой тутор у майка в блоге про палитру. я там на курсорах юзал этот самый каптуре. попробуй сделать без них, и вытащи мышку за границы селектора. событие вызовится. но если стаит каптуре, то событие вызывается только поотпусканию мыши. Последний раз редактировалось BlooDHounD; 28.12.2005 в 16:51. |
|
|||||
МЕГАФЛЭШЕР
Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
|
Параметр useCapture ведь это лишь слушать capture-фазу... а setCaputure - это слушать все события мыши (и клавиатуры судя по хелпу) независимо от того в какой точки иерарихи спрайтов находимся. Что я не улавливаю связи. Приведи пример. Интересно.
|
|
|||||
стервочка (я мужик)
|
ну блин. я же написал где пример смотреть.
"лень - двигатель прогресса" - это я понимаю, но затратить 2 минуты чтобы в блог самому зайти ... рррррррррр, а ещё новичков гоняете за лень. по существу. возвращаюсь к воспросу. весь прикол в том что stage почему-то доступен только из рута. Если я пытаюсь написать строчку глубже он пишет: TypeError: Error #1009: null has no properties. Я конечно всё понимаю .... но так во всех классах у меня. Я сперва писал в контрукторе и понял типа что возможно не видит из-за того что объект не добавлен на сцену. Вынес из конструктора, а фиг. всёравно одно и тоже. |
|
|||||
МЕГАФЛЭШЕР
Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
|
Цитата:
пример посмотрел, но.... ничего мне это не дало, видел до этого использование setCaputure() как я понял setCapture() можно вызывать между событиями MOUSE_DOWN и MOUSE_UP, в других случаях дает исключение. Чтото вроде - "у меня уже есть кепчур". по stage во вложенных - полная непонятность, даже не знаю.... вообще stage судя по описанию - это временно, предполагаю тут пока копать незачем, из вариантов решения -просто сделать геттер getStage() у рутового спрайта, или метод подписки на событие "глобального" кейбоарда .... Последний раз редактировалось john; 28.12.2005 в 18:05. |
|
|||||
стервочка (я мужик)
|
да не в гетере дело ... тут иногда доступен а иногда нет. и как определить это самое иногда я не представляю
после сеткаптуре, события овер и оут перестают улавливаться .... |
|
|||||
МЕГАФЛЭШЕР
Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
|
думаю тут проблема в инициализации, в конструкторе может быть что нет еще stage, а вот в каком нибудь INIT или ADDED есть,
кстати верно, нужно проверить. |
Часовой пояс GMT +4, время: 15:21. |
|
« Предыдущая тема | Следующая тема » |
|
|