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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.04.2013, 15:26
ndiezel вне форума Посмотреть профиль Отправить личное сообщение для ndiezel Посетить домашнюю страницу ndiezel Найти все сообщения от ndiezel
  № 1  
Ответить с цитированием
ndiezel
 
Аватар для ndiezel

Регистрация: Mar 2009
Адрес: Из города на Ингуле
Сообщений: 116
Отправить сообщение для ndiezel с помощью ICQ
По умолчанию Не работает KeyboardEvent

Здравствуйте.
Уже второй день бьюсь с каким-то не понятным мне глюком.

Код:
Код AS3:
private function start_game(level)
		{
			stage.addEventListener(KeyboardEvent.KEY_DOWN,hero_fly);
			function hero_fly(e:KeyboardEvent):void
			{
				trace("asdas");
				switch (e)
				{
				...
Запускаю - trace ничего не выводит при нажатии на клавиши. Функция hero_fly - не запускается.
библиотеки KeyboardEvent и Event - подключены.
Вставляю этот код в основной as файл - работает. Пишу в классе Main - не работает.

В чём может быть причина?

Старый 25.04.2013, 15:33
Deimos747 вне форума Посмотреть профиль Отправить личное сообщение для Deimos747 Найти все сообщения от Deimos747
  № 2  
Ответить с цитированием
Deimos747
 
Аватар для Deimos747

Регистрация: Mar 2011
Сообщений: 243
Проблема в том, что на объекте нет фокуса. Если вам нужен обработчик, который будет работать всегда, то подписывайтесь к stage приложения.

Старый 25.04.2013, 15:37
ndiezel вне форума Посмотреть профиль Отправить личное сообщение для ndiezel Посетить домашнюю страницу ndiezel Найти все сообщения от ndiezel
  № 3  
Ответить с цитированием
ndiezel
 
Аватар для ndiezel

Регистрация: Mar 2009
Адрес: Из города на Ингуле
Сообщений: 116
Отправить сообщение для ndiezel с помощью ICQ
Цитата:
Сообщение от Deimos747 Посмотреть сообщение
Проблема в том, что на объекте нет фокуса. Если вам нужен обработчик, который будет работать всегда, то подписывайтесь к stage приложения.
Нет, мне не нужен обработчик, который будет работать всегда.
Я правильно вас понял, что нужно фокус переместить на мувик, действия в котором мне нужно отслеживать?

Если это так, буду благодарен за пример.

Старый 25.04.2013, 15:37
chamele0n вне форума Посмотреть профиль Отправить личное сообщение для chamele0n Посетить домашнюю страницу chamele0n Найти все сообщения от chamele0n
  № 4  
Ответить с цитированием
chamele0n

Регистрация: Feb 2013
Адрес: Seireitei
Сообщений: 176
Цитата:
Сообщение от ndiezel Посмотреть сообщение
Вставляю этот код в основной as файл - работает.
тоесть fla ?

вешай слушатели в конструкторе главного класа
Код AS3:
public function Main() {
     stage.addEventListener(KeyboardEvent.KEY_DOWN,hero_fly);
     .....
__________________
Personal Page
$demo = $away3d + $bullet + $pathfinding;

Старый 25.04.2013, 15:42
Deimos747 вне форума Посмотреть профиль Отправить личное сообщение для Deimos747 Найти все сообщения от Deimos747
  № 5  
Ответить с цитированием
Deimos747
 
Аватар для Deimos747

Регистрация: Mar 2011
Сообщений: 243
Вешайте обработчик на
Код AS3:
Main.instance.stage.addEventListener(KeyboardEvent.KEY_DOWN,hero_fly);
где в Main.as
Код AS3:
public static var instance: Main;
public function Main() {
     instance = this;
     .....
}

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

Регистрация: Mar 2011
Сообщений: 243
Напишите в главном классе аналогичный код
Цитата:
Сообщение от Deimos747 Посмотреть сообщение
Код AS3:
public static var instance: Main;
public function Main() {
     instance = this;
     .....
}

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

Регистрация: Mar 2009
Адрес: Из города на Ингуле
Сообщений: 116
Отправить сообщение для ndiezel с помощью ICQ
Цитата:
Сообщение от Deimos747 Посмотреть сообщение
Напишите в главном классе аналогичный код
Я не так делал, да и не суть важно уже.
Решил сделать с помощью focus
Код AS3:
private function start_game(level)
		{
			stage.focus=this;
			addEventListener(KeyboardEvent.KEY_DOWN,hero_fly);
 
			function hero_fly(e:KeyboardEvent):void
			{
				switch (e)
				{
					case Keyboard.UP :
						{
							trace("asdas");
							y -=  5;
							break;
					}
				}
			}
		};
Обращение к функции hero_fly пошло, но перебор нажатых клавиш почему-то не работает.
trace не выводит ничего.


Последний раз редактировалось ndiezel; 25.04.2013 в 17:39.
Старый 25.04.2013, 15:54
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 8  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
"Main.instance.stage" — зло.
__________________
hauts.ru

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

Регистрация: Mar 2011
Сообщений: 243
Цитата:
Сообщение от Hauts Посмотреть сообщение
"Main.instance.stage" — зло.
Не спорю, но другого простого способа не знаю. Написание KeyboardManager не в счёт.

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

Регистрация: Mar 2009
Адрес: Из города на Ингуле
Сообщений: 116
Отправить сообщение для ndiezel с помощью ICQ
Цитата:
Сообщение от Deimos747 Посмотреть сообщение
Не спорю, но другого простого способа не знаю. Написание KeyboardManager не в счёт.
Что такое KeyboardManager ?

И эм...
Я не против "философских диспутов", но у меня тут код не работает. И что самое печальное - я никак не могу понять - почему?
Растолкуйте уж топикстартеру, пожалуйста.

Да и не работает у меня main.instance
Ошибку выдаёт компиллятор.

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

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

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


 


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


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