【问题标题】:Call to possibly undefined method addEventListener调用可能未定义的方法 addEventListener
【发布时间】:2011-08-14 07:50:20
【问题描述】:

由于某种原因,我无法添加事件侦听器。我已经搜索了错误,但人们说这是由于 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;
    }
}

}

【问题讨论】:

    标签: actionscript-3


    【解决方案1】:

    这是因为addEventListenerEventDispatcher 类的一个函数,你必须扩展它才能使用它。

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

        public class keyClass extends EventDispatcher {
    

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

    【讨论】:

    • 嗯,IEventDispatcher 对我来说很好用。为什么在您看来无法实现?
    • 那么要么你知道一个我不知道的技巧,要么你还没有使用自定义 IEventDispatcher 事件的目标。根据 AS3 Signals 的创建者 Robert Penner 的说法,不可能从外部设置事件的目标。它只能由 EventDispatcher 类本身来完成。
    • 当然可以实现IEventDispatcher,只需proxy the calls to EventDispatcher。如果您需要扩展一个不扩展 EventDispatcher 的类,这将很有帮助(Adobe 真的应该让事件成为一个成熟的语言功能的另一个原因......)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多