ActionScript3 Внешний класс слушателя клавиатуры - PullRequest
0 голосов
/ 10 октября 2011

Я пытался создать танковую игру, в которой я мог бы перемещать танки, позволять им стрелять друг в друга и т. Д. Я настаиваю на создании внешних классов с помощью Flash Pro, потому что я привык к языку ООП, как Java. Я создал класс Tank, который представляет все танки. Вот код этого класса:

package src
{
    import flash.display.MovieClip;
    import flash.events.KeyboardEvent;
    import flash.ui.Keyboard;

    public class Tank extends MovieClip 
    {       
        public function Tank():void {           
            this.addEventListener(KeyboardEvent.KEY_DOWN, move);
            this.addEventListener(MouseEvent.CLICK, test);
        }
        protected function move(event:KeyboardEvent):void {
            trace("key down");
            switch (event.keyCode) {
                case Keyboard.UP: {
                    this.y += -5;                   
                    break;
                }
                case 40: {
                    this.y += 5;                    
                    break;
                }
                case Keyboard.LEFT: {
                    this.x += -5;                   
                    break;
                }
                case Keyboard.RIGHT: {
                    this.x += 5;                    
                    break;

                }

            }
        }

    }

}

Проблема в том, что слушатель действия никогда не вызывается, когда я нажимаю какие-либо клавиши. trace () не вызывается. Но я попытался добавить слушателя мыши только для проверки, и это сработало. Итак, я думаю, это проблема класса слушателя событий клавиатуры? Каждый, кого я вижу в Интернете, использует подход stage.addEventListener (KeyboardEvent.KEY_DOWN, move).

Может кто-нибудь сказать мне, почему он не работает? И есть ли какие-то решения? (Только добавляя внешние классы, пожалуйста) Спасибо!

1 Ответ

0 голосов
/ 10 октября 2011

Попробуйте добавить своих ключевых слушателей на сцену.

stage.addEventListener(KeyboardEvent.KEY_DOWN, move);

Stage всегда сможет обнаружить ключевые события, когда ваше приложение находится в фокусе.

...