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

时间:2016-11-18 08:04:19

标签: actionscript-3

我希望有一个名为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");
        }

    }

}

会抛出此错误:

C:...\Commands.as, Line 15, Column 4    1180: Call to a possibly undefined method addEventListener.

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

//...
    public class Commands extends DisplayObject{
// ...

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

ArgumentError: Error #2012: Commands$ class cannot be instantiated.

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

我在这里缺少什么?

顺便说一句,我这样做的原因是我可以通过简单地删除实例化这个类的代码行来删除这个功能(因此用户无法使用它)。我认为这很漂亮,但是如果这看起来很像,请务必说出来!

1 个答案:

答案 0 :(得分: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");
    }

}