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

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

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

Регистрация: Jan 2013
Адрес: Москва, Сходня
Сообщений: 41
По умолчанию Не отображаются коды клавиш-букв

Здравствуйте, решил сделать управление не только стрелками, но и с помощью клавиш WASD. Написал такой код класса keys, он отображает коды стрелок, пробела, цифр и др клавиш, кроме букв, хотя вроде должен.
В нем есть trace, когда нажата стрелка - ее код выводится, если нажата клавиша W - код не выводится.
Код AS3:
package  
{
	import flash.display.Sprite;
	import flash.events.KeyboardEvent;
	public class Keys extends Sprite
	{
		internal var space:Boolean = false;
		internal var up:Boolean = false;
		internal var down:Boolean = false;
		internal var left:Boolean = false;
		internal var right:Boolean = false;
 
		public function Keys(keys_sprite:Sprite) 
		{
			keys_sprite.stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
			keys_sprite.stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
		}
 
		private function keyDownHandler(event:KeyboardEvent):void
		{
 
			switch(event.keyCode)
			{
				case 38 : up = true; break;
				case 40 : down = true; break;
				case 37 : left = true; break;
				case 39 : right = true; break;
				case 87 : trace('WWWWWW'); break;
				case 32 : space = true; break;
			}
			trace(event.keyCode);
 
		}
 
		private function keyUpHandler(event:KeyboardEvent):void
		{
 
			switch(event.keyCode)
			{
				case 38 : up = false; break;
				case 40 : down = false; break;
				case 37 : left = false; break;
				case 39 : right = false; break;
				case 32 : space = false; break;
			}
 
		}
 
	}
}

Старый 07.03.2013, 11:49
yasha005 вне форума Посмотреть профиль Отправить личное сообщение для yasha005 Найти все сообщения от yasha005
  № 2  
Ответить с цитированием
yasha005
[+1 16.03.13]
[+1 22.03.13]

Регистрация: Dec 2012
Сообщений: 100
Согласно документации статическая константа с таким значением из класса Keyboard доступна только во время выполнения AIR

Так же в документации указано примечание к совйству keyCode класса KeyboardEvent: Если работает редактор метода ввода (IME), charCode не сообщает точные коды клавиш.

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

Регистрация: Oct 2012
Сообщений: 191
а по-мойму, если Вы пишете во флеше, то клавиша W просто вызывает некий инструмент и в тестирование флешки не доходит...

Старый 07.03.2013, 12:07
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 4  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,112
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Во время тестирования нажмите Control -> Disable Keyboard Shortcuts
__________________
hauts.ru

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

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
У меня выводится.
Код:
38 // нажал вверх
37 // нажал влево
39 // нажал вправо
40 // нажал вниз
WWWWWW // нажал 'w'
87
Разница в том, что я повесил прослушку прямо на стейдж главного класса.
Код AS3:
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
Может дело в том, что keys_sprite не добавлен в список отображения.
UPD: хотя, нет, проверил, дело не в этом:
Код AS3:
// s - это спрайт
addChild(s);
s.stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
s.stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
removeChild(s);
Вывод продолжается, ссылка-то на stage сохранилась. Так что мое предположение ошибочно.

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Похоже дело тут именно в том, что написал vitamin4er

В самом коде проблем не вижу.

Старый 07.03.2013, 20:50
zzSpirit вне форума Посмотреть профиль Отправить личное сообщение для zzSpirit Найти все сообщения от zzSpirit
  № 7  
Ответить с цитированием
zzSpirit
 
Аватар для zzSpirit

Регистрация: Jan 2013
Адрес: Москва, Сходня
Сообщений: 41
Цитата:
Сообщение от Hauts Посмотреть сообщение
Во время тестирования нажмите Control -> Disable Keyboard Shortcuts
Помогло

Да, тестировал во флеше, ФД сейчас не работает. Витамин был прав:

Добавлено через 34 секунды
Цитата:
Сообщение от vitamin4er Посмотреть сообщение
а по-мойму, если Вы пишете во флеше, то клавиша W просто вызывает некий инструмент и в тестирование флешки не доходит...
вот в этом и было дело...

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

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

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


 


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


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