Actionscript 3 调用可能未定义的方法addEventListener

Actionscript 3 调用可能未定义的方法addEventListener,actionscript-3,Actionscript 3,由于某些原因,我无法添加事件侦听器。。我已经搜索了错误,但人们说这是由于addEventListener位于函数之外。但是我的在构造函数里面 package { import flash.events.*; public class keyClass { var keyArray:Array = new Array ; public function keyClass() { for (var i = 0; i < 999; i++) {

由于某些原因,我无法添加事件侦听器。。我已经搜索了错误,但人们说这是由于addEventListener位于函数之外。但是我的在构造函数里面

package {
import flash.events.*;

public class keyClass {
    var keyArray:Array = new Array  ;

    public function keyClass() {
        for (var i = 0; i < 999; i++) {
            keyArray[i] = false;
        }
        addEventListener(KeyboardEvent.KEY_DOWN,onKyDwn);
        addEventListener(KeyboardEvent.KEY_UP,onKyUp);
    }
    public function onKyDwn(e:KeyboardEvent) {
        keyArray[e.keyCode] = true;
    }
    public function onKyUp(e:KeyboardEvent) {
        keyArray[e.keyCode] = false;
    }
}

}
包{
导入flash.events.*;
公共类密钥类{
var keyArray:Array=新数组;
公共函数keyClass(){
对于(变量i=0;i<999;i++){
keyArray[i]=false;
}
addEventListener(KeyboardEvent.KEY_DOWN,onKyDwn);
addEventListener(KeyboardEvent.KEY_UP,onKyUp);
}
公共函数onKyDwn(e:KeyboardEvent){
keyArray[e.keyCode]=真;
}
公共功能onKyUp(e:键盘事件){
keyArray[e.keyCode]=false;
}
}
}

这是因为
addEventListener
是类的函数,必须对其进行扩展才能使用它

因此,在您的情况下,将类定义更改为:

    public class keyClass extends EventDispatcher {

另外,不要费心查看
IEventDispatcher
界面。由于未知的原因,它已无法实施。获取本机事件功能的唯一方法是扩展
EventDispatcher

嗯,IEventDispatcher对我来说很好。为什么它在你的比赛中不可实现?那么要么你知道一个我不知道的技巧,要么你还没有使用你的自定义IEventDispatcher比赛的目标。根据AS3信号的创建者,不可能从外部设置事件的目标。它只能由EventDispatcher类本身完成。当然,您可以实现
IEventDispatcher
,只要。如果您需要扩展一个不扩展
EventDispatcher
的类,这会很有帮助(另一个Adobe真的应该让events成为一个成熟的语言功能的原因…)