【问题标题】:ActionScript3 External Class Keyboard ListenerActionScript3 外部类键盘侦听器
【发布时间】:2011-10-10 10:34:28
【问题描述】:

我正在尝试制作一个坦克游戏,我可以在其中移动坦克,让它们互相射击等等......我坚持使用 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()。但我试图添加一个鼠标监听器只是为了测试并且它有效。所以我猜它是键盘事件监听器类的问题?我在网上看到的每个人都使用 stage.addEventListener(KeyboardEvent.KEY_DOWN, move) 方法。

谁能告诉我为什么它不起作用?有什么解决办法吗?(请只添加外部类)谢谢!

【问题讨论】:

    标签: actionscript-3 class keyboard external actionlistener


    【解决方案1】:

    尝试将您的主要听众添加到舞台。

    stage.addEventListener(KeyboardEvent.KEY_DOWN, move);

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

    【讨论】:

    • 在您的示例中,Tank 实例向自己添加了键盘侦听器 - 这意味着它们需要拥有键盘焦点才能接收键盘事件。见:Stage.focus()
    • "this" 是一个关键字,指的是运行代码的对象实例。在您发布的示例中,“this”指的是 Tank 的单个实例。 “this”是 ActionScript 中的隐式引用,实际上并不需要。 “stage.addEventListener”和“this.stage.addEventListener”一样
    猜你喜欢
    • 2016-06-14
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-31
    • 2014-09-10
    相关资源
    最近更新 更多