![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Feb 2014
Сообщений: 192
|
подскажите как в AS3 написать код движения объектом с помощью клавиш клавиатуры (стрелки вверх, вниз, вправо, влево).
У меня не получается разобраться : например, можно ли слушаетль событий KeyboardEvent включить в обработчик EnterFrame. или надо в обработчике EnterFrame давать ссылку на обработчик KeyboardEvent. Последний раз редактировалось Dmitriy154; 17.04.2014 в 23:46. |
|
|||||
|
А зачем KeyboardEvent при курсоре? Вам нужен MouseEvent.
__________________
There is no thing in this world that is not simple. |
|
|||||
|
Регистрация: Feb 2014
Сообщений: 192
|
нет, представьте игру управления танком. Гусиницами (танком вцелом)мы управляем стрелками клавиатуры, а мышкой повороты и стрельба башни.
Я хотел спросить мастеров, как совместить прослушивание EnterFrame и KeyboardEvent . Т.е. я пытался в коде обработчика EnterFrame зарегистрировать приемник событий клавиатуры, но получается абракадабра. Можно ли вообще в обработчике регистрировать другие приемники или в коде обработчика enterFrame. Кто понял мой вопрос, пожалуйста, хоть напишите словами как можно Последний раз редактировалось Dmitriy154; 17.04.2014 в 23:46. |
|
|||||
|
Регистрация: Feb 2014
Сообщений: 192
|
Извините, я не правильно выразился не курсором, а стрелками на клавиатуре (UP, LEFT...)
|
|
|||||
|
Зачастую можно применить следующий распространённых подход. Для каждой нужной вам клавиши вы создаёте свою булеву переменную, например для клавиши "вверх";
Подписываете сцену на нажатие и отжатие клавиатуры. При нажатии - проверяете какая клавиша была нажата, и если была нажата одна из нужных вам клавиш, то присваиваете переменной значение true, например для клавиши "вверх" stage.addEventListener(KeyboardEvent.KEY_DOWN,stage_keyDown); function stage_keyDown(e:KeyboardEvent):void { if(e.keyCode==38) upKey=true; } stage.addEventListener(KeyboardEvent.KEY_UP, stage_keyUp); function stage_keyUp(e:KeyboardEvent):void { if(e.keyCode==38) upKey=false; } |
|
|||||
|
Абсолютно не могу понять, откуда на форуме такое повальное увлечение магическими числами для сравнивания с keyCode.
Чем вам константы класса Keyboard не угодили? Да и лучше не заводить по полю на каждый кейкод, а создать таблицу флагов и сверяться с ней посредством какого-нибудь менеджера с помощью метода, например, hasPressed(keycode : int):boolean.
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ" Мои ачивки: художник-паразит. |
|
|||||
|
Регистрация: Feb 2014
Сообщений: 192
|
Спасибо, samana, помогли!
ChuwY, а как создать таблицу флагов, т.е. сделать массив? И как работает этот метод hasPressed? |
|
|||||
|
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 22:22. |
|
|
« Предыдущая тема | Следующая тема » |
|
|