Как обнаружить многократное нажатие клавиши в as3? - PullRequest
1 голос
/ 02 ноября 2011

Я только начал изучать AS3.

Допустим, у меня есть два текстовых поля на моем спрайте.

Мне нравится перемещать текстовое поле 1, когда я нажимаю клавиши со стрелками влево или вправо, но я также хочу перемещать текстовое поле 2, когда я нажимаю пробел, когда текстовое поле 1 движется как ... игра в эфир (вы можете стрелять ракетой, пока вы переезжаем).

Мне действительно нравится размещать свой исходный код ... но на самом деле я понятия не имею, с чего начать.

следующий код перемещает текстовое поле 1 при нажатии клавиш со стрелками ...

мой фрагмент кода:

private function keyHandler(event:KeyboardEvent):void
{

    switch(event.keyCode)
    {
        case 38:
            this._txt.y -= 10;
            break;
        case 40:
            this._txt.y += 10;
            break;

        case 39:
            this._txt.x += 10;
            break;
        case 37:
            this._txt.x -= 10;
            break;
    }


}

1 Ответ

10 голосов
/ 02 ноября 2011
package  {
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.KeyboardEvent;
    import flash.ui.Keyboard;
    /**
     * ...
     * @author www0z0k
     */
    public class KeyExample extends Sprite {
        private var _theyArePressed:Object = { };
        public function KeyExample() {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }

        private function init(e:Event):void {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            stage.addEventListener(KeyboardEvent.KEY_DOWN, onDown);
            stage.addEventListener(KeyboardEvent.KEY_UP, onUp);         
        }

        private function onUp(e:KeyboardEvent):void {
            _theyArePressed[e.keyCode] = false;
        }

        private function onDown(e:KeyboardEvent):void {
            _theyArePressed[e.keyCode] = true;
            if (_theyArePressed[Keyboard.SPACE] && _theyArePressed[Keyboard.UP]) {
                //do anything
            }
        }       
    }
}

, но имейте в виду, что клавиатура AFAIK может одновременно обрабатывать ограниченное количество клавиш, в зависимости от аппаратного обеспечения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...