Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Не отображаются коды клавиш-букв (http://www.flasher.ru/forum/showthread.php?t=195441)

zzSpirit 07.03.2013 11:10

Не отображаются коды клавиш-букв
 
Здравствуйте, решил сделать управление не только стрелками, но и с помощью клавиш 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;
                        }
 
                }
 
        }
}


yasha005 07.03.2013 11:49

Согласно документации статическая константа с таким значением из класса Keyboard доступна только во время выполнения AIR

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

vitamin4er 07.03.2013 12:00

а по-мойму, если Вы пишете во флеше, то клавиша W просто вызывает некий инструмент и в тестирование флешки не доходит...

Hauts 07.03.2013 12:07

Во время тестирования нажмите Control -> Disable Keyboard Shortcuts

bav 07.03.2013 12:09

У меня выводится.
Код:

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 сохранилась. Так что мое предположение ошибочно.

caseyryan 07.03.2013 12:18

Похоже дело тут именно в том, что написал vitamin4er

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

zzSpirit 07.03.2013 20:50

Цитата:

Сообщение от Hauts (Сообщение 1124000)
Во время тестирования нажмите Control -> Disable Keyboard Shortcuts

Помогло

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

Добавлено через 34 секунды
Цитата:

Сообщение от vitamin4er (Сообщение 1123998)
а по-мойму, если Вы пишете во флеше, то клавиша W просто вызывает некий инструмент и в тестирование флешки не доходит...

вот в этом и было дело...


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

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