Events CreateJS eventlistener工作不正常
我有以下代码:Events CreateJS eventlistener工作不正常,events,createjs,easeljs,dispatch,Events,Createjs,Easeljs,Dispatch,我有以下代码: class classA { constructor() { createjs.EventDispatcher.initialize(classA.prototype); this.addEventListener("someEvent", function(evt) { console.log("classA has detected something has happened!"); });
class classA {
constructor() {
createjs.EventDispatcher.initialize(classA.prototype);
this.addEventListener("someEvent", function(evt) {
console.log("classA has detected something has happened!");
});
}
}
class classB {
constructor() {
createjs.EventDispatcher.initialize(classB.prototype);
this.addEventListener("someEvent", function(evt) {
console.log("classB has detected something has happened!");
});
this.dispatchEvent("someEvent");
}
}
let a = new classA();
let b = new classB();
现在,当我构造classA时,它被设置为侦听“someEvent”,但是当在classB的构造函数中调度“someEvent”时,只有classB注册该事件
这是为什么?之所以会发生这种情况,是因为只有“ClassB”实例正在侦听“ClassB”实例调度的事件。创建类时,您将:
中
var a = new ClassA();
var b = new ClassB();
b.addEventListener("someEvent", a.someFunction);
还要注意,您正在将EventDispatcher与构造函数中的原型混用。如果希望它出现在原型中,请将其添加到构造函数之外——否则每次都会发生。如果只想在一个实例上使用它,那么将其放入构造函数中,但只需传递this
,而不是Class.prototype
class ClassB {
// stuff
}
createjs.EventDispatcher.initialize(ClassB.prototype);
或者更好,只需扩展EventDispatcher
Class B extends createjs.EventDispatcher {
// stuff
}