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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 11.01.2012, 00:58
Aveyder93 вне форума Посмотреть профиль Отправить личное сообщение для Aveyder93 Найти все сообщения от Aveyder93
  № 1  
Ответить с цитированием
Aveyder93

Регистрация: Jan 2012
Сообщений: 3
Question Кнопочные события возникают только после клика

Помогите пожалуйста!
Возникла проблема следующего плана:
В основном классе запускается конструктор, в нём происходит пользовательское событие, а в приёмнике этого события создаётся объект keyboard_input класса Keys (который отвечает за отлваливание нажатий клавиш up, right,down, space, left).
Сам класс Keys:
Код AS3:
package {
	import flash.events.*;
	public class Keys {
		private var press_left=false;
		private var press_right=false;
		private var press_up=false;
		private var press_down=false;
		private var press_space=false;
		public function Keys(movieclip) {
 
			movieclip.stage.addEventListener(KeyboardEvent.KEY_DOWN,key_down);
			movieclip.stage.addEventListener(KeyboardEvent.KEY_UP,key_up);
		}
		public function is_left() {
 
			return press_left;
		}
		public function is_down() {
			return press_down;
		}
		public function is_right() {
			return press_right;
		}
		public function is_up() {
			return press_up;
		}
		private function key_down(event:KeyboardEvent) {
			if (event.keyCode==32) {
				trace('p');
				press_space=true;
			}
			if (event.keyCode==37) {
				press_left=true;
			}
			if (event.keyCode==38) {
				press_up=true;
			}
			if (event.keyCode==39) {
				press_right=true;
			}
			if (event.keyCode==40) {
				press_down=true;
			}
 
		}
		private function key_up(event:KeyboardEvent) {
			if (event.keyCode==32) {
				press_space=false;
			}
			if (event.keyCode==37) {
				press_left=false;
			}
			if (event.keyCode==38) {
				press_up=false;
			}
			if (event.keyCode==39) {
				press_right=false;
			}
			if (event.keyCode==40) {
				press_down=false;
			}
		}
	}
}
Суть проблемы в том, что приёмник события начинает работаь
Код AS3:
 
private function key_down(event:KeyboardEvent) { 
}
только после того как один раз "клацнуть" по области ролика.
Ивенты
Код AS3:
MouseEvent.CLICK
использовал, но они никак не относятся к классу Keys.
Буду очень благодарен за помощь!

Старый 11.01.2012, 01:21
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 2  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Дело не в клике, как таковом, а в том, что события с клавиатуры флеш приложение начинает получать только когда оно в фокусе. И фокус этот мы даем флешке именно кликнув на нее.
Именно для этого прежде, чем начинать слушать клавиатуру, мы всегда предлагаем пользователю хоть что-то нажать мышкой, чтобы он, сам того не понимая, создал необходимые условия для работы с клавиатурой.
__________________
Поймай яблоко 2!

Старый 11.01.2012, 02:12
Aveyder93 вне форума Посмотреть профиль Отправить личное сообщение для Aveyder93 Найти все сообщения от Aveyder93
  № 3  
Ответить с цитированием
Aveyder93

Регистрация: Jan 2012
Сообщений: 3
Ясно, первая мысль тоже была такая, только не понял до конца, почему фокус пропадает. В таком случае добавлю что-то кликабельное. Спасибо!

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

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

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


 


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


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