AS3 addEventListener不是我的自定义类中的可识别方法

Nea*_*vis 2 actionscript-3

我希望有一个名为Class的类Commands,我可以将不同的按键和功能放入其中,以控制游戏状态和变量,以便快速轻松地进行游戏测试.我正在尝试这个,但它不起作用......

package gameTesting {
    import flash.events.KeyboardEvent;
    import flash.events.*;
    import flash.ui.Keyboard;
    import flash.display.*;
    import flash.events.EventDispatcher;

    public class Commands {

        public function Commands() {
            addEventListeners();
        }

        public function addEventListeners():void{
            addEventListener(KeyboardEvent.KEY_DOWN,keyDown);
        }

        public function keyDown(ke:KeyboardEvent):void{
            trace("key pressed");
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

这引发了这个错误:

C:...\Commands.as, Line 15, Column 4    1180: Call to a possibly undefined method addEventListener.
Run Code Online (Sandbox Code Playgroud)

所以,我尝试让我的类扩展继承EventDispatcher方法的东西:

//...
    public class Commands extends DisplayObject{
// ...
Run Code Online (Sandbox Code Playgroud)

但是.as当我尝试实例化这个类时,我只是从我的主文件中抛出此错误:

ArgumentError: Error #2012: Commands$ class cannot be instantiated.
Run Code Online (Sandbox Code Playgroud)

我也试过抛出static关键字只是为了lols,但没有骰子.

我在这里错过了什么?

顺便说一句,我这样做的原因只是因为我可以通过简单地删除实例化这个类的代码行来删除这个功能(因此用户不能使用它).我觉得这很漂亮,但是如果这看起来像是asinine,那么一定要说出来!

Pan*_*Pan 5

尝试将stage传递给Commands,这样就可以在舞台上添加addEventListener.

import flash.display.Stage;

public class Commands {

    public function Commands(stage:Stage) {
        stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDown);
    }

    public function keyDown(ke:KeyboardEvent):void{
        trace("key pressed");
    }

}
Run Code Online (Sandbox Code Playgroud)