ActionScript3外部类键盘侦听器

时间:2011-10-10 02:16:42

标签: actionscript-3 class keyboard external actionlistener

我试图制作坦克游戏,我可以移动坦克,让他们互相射击等等......我坚持用Flash Pro创建外部类,因为我习惯了像Java这样的OOP语言。我创建了一个代表所有坦克的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()未被调用。但我试图添加一个鼠标监听器只是为了测试它的工作原理。所以我猜它是Keyboard事件监听器类的问题?我在网上看到的每个人都使用stage.addEventListener(KeyboardEvent.KEY_DOWN,move)方法。

有谁可以告诉我为什么它不起作用?有没有解决方案?(只有通过添加外部课程),谢谢!

1 个答案:

答案 0 :(得分:0)

尝试将关键监听器添加到舞台。

stage.addEventListener(KeyboardEvent.KEY_DOWN, move);

当应用程序处于焦点时,舞台将始终能够检测到关键事件。