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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.12.2005, 03:01
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 1  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
По умолчанию 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.
Старый 28.12.2005, 15:58
john вне форума Посмотреть профиль Отправить личное сообщение для john Посетить домашнюю страницу john Найти все сообщения от john
  № 2  
Ответить с цитированием
john
МЕГАФЛЭШЕР

Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
все задают похожие вопросы, и я тоже задаю,
пока не нашел,
единственное пока знаю,
чтобы перехватывать события клавиатуры, спрайт который перехватывает должен быть в фокусе ввода -

staget.focus = this;

а вот как глобально - самому интересно;

Старый 28.12.2005, 16:27
john вне форума Посмотреть профиль Отправить личное сообщение для john Посетить домашнюю страницу john Найти все сообщения от john
  № 3  
Ответить с цитированием
john
МЕГАФЛЭШЕР

Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
помоему решение таится в методе setCapture();
во всяком случае данный метод используется в drag&drop решениях для того чтобы слушать глобальные события мыши, но как импользоваться я пока не понял - дает исключение.

Старый 28.12.2005, 16:35
john вне форума Посмотреть профиль Отправить личное сообщение для john Посетить домашнюю страницу john Найти все сообщения от john
  № 4  
Ответить с цитированием
john
МЕГАФЛЭШЕР

Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
а ларчик просто открывался....
stage.addEventListener(KeyboardEventType.KEY_DOWN, onKeyDown);

Старый 28.12.2005, 16:46
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 5  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
как им пользоваться я понял с большей части. но вот только этот метод относиться к событиям мыши больше. когда создаёшь листенер там есть параметр useCapture. Так вот можно создать 2 разных события и обрабатываться они будут в разное время.

Посмотри мой тутор у майка в блоге про палитру. я там на курсорах юзал этот самый каптуре.
попробуй сделать без них, и вытащи мышку за границы селектора. событие вызовится. но если стаит каптуре, то событие вызывается только поотпусканию мыши.


Последний раз редактировалось BlooDHounD; 28.12.2005 в 16:51.
Старый 28.12.2005, 16:53
john вне форума Посмотреть профиль Отправить личное сообщение для john Посетить домашнюю страницу john Найти все сообщения от john
  № 6  
Ответить с цитированием
john
МЕГАФЛЭШЕР

Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
Параметр useCapture ведь это лишь слушать capture-фазу... а setCaputure - это слушать все события мыши (и клавиатуры судя по хелпу) независимо от того в какой точки иерарихи спрайтов находимся. Что я не улавливаю связи. Приведи пример. Интересно.

Старый 28.12.2005, 17:08
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 7  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
ну блин. я же написал где пример смотреть.
"лень - двигатель прогресса" - это я понимаю, но затратить 2 минуты чтобы в блог самому зайти ... рррррррррр, а ещё новичков гоняете за лень.

по существу.

возвращаюсь к воспросу. весь прикол в том что stage почему-то доступен только из рута. Если я пытаюсь написать строчку глубже он пишет:

TypeError: Error #1009: null has no properties.

Я конечно всё понимаю .... но так во всех классах у меня. Я сперва писал в контрукторе и понял типа что возможно не видит из-за того что объект не добавлен на сцену. Вынес из конструктора, а фиг. всёравно одно и тоже.

Старый 28.12.2005, 18:03
john вне форума Посмотреть профиль Отправить личное сообщение для john Посетить домашнюю страницу john Найти все сообщения от john
  № 8  
Ответить с цитированием
john
МЕГАФЛЭШЕР

Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
Цитата:
Сообщение от BlooDHounD
ну блин. я же написал где пример смотреть.
"лень - двигатель прогресса" - это я понимаю, но затратить 2 минуты чтобы в блог самому зайти ... рррррррррр, а ещё новичков гоняете за лень.
а вот не правда ваша... я читал пост без указания на пример, вы ее (указание) потом прилепили

пример посмотрел,

но.... ничего мне это не дало, видел до этого использование setCaputure() как я понял setCapture() можно вызывать между событиями MOUSE_DOWN и MOUSE_UP, в других случаях дает исключение. Чтото вроде - "у меня уже есть кепчур".

по stage во вложенных - полная непонятность, даже не знаю.... вообще stage судя по описанию - это временно, предполагаю тут пока копать незачем,
из вариантов решения -просто сделать геттер getStage() у рутового спрайта, или метод подписки на событие "глобального" кейбоарда ....


Последний раз редактировалось john; 28.12.2005 в 18:05.
Старый 28.12.2005, 18:33
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 9  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
да не в гетере дело ... тут иногда доступен а иногда нет. и как определить это самое иногда я не представляю

после сеткаптуре, события овер и оут перестают улавливаться ....

Старый 28.12.2005, 19:00
john вне форума Посмотреть профиль Отправить личное сообщение для john Посетить домашнюю страницу john Найти все сообщения от john
  № 10  
Ответить с цитированием
john
МЕГАФЛЭШЕР

Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
думаю тут проблема в инициализации, в конструкторе может быть что нет еще stage, а вот в каком нибудь INIT или ADDED есть,
кстати верно, нужно проверить.

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

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

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


 


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


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