我创建了一个自定义事件:
class SomeEvent extends Event {
public static var SOMETHING_CHANGED = "somethingChanged";
public var propery1: String;
public var property2: String;
override public function clone():Event {
var evt: GraphicsEvent = new SomeEvent(type, bubbles, cancelable);
evt.propery1 = propery1;
evt.propery2 = propery2;
return evt;
}
}
之后我将侦听器添加到扩展Sprite的类
class SomeClass extends Sprite {
public function SomeClass() {
this.addEventListener(SomeEvent.SOMETHING_CHANGED, somethingChangedHandler);
}
....
public somethingChangedHandler(e: SomeEvent) {
trace("Got event!!");
}
}
最后我发送了一个活动
var e = new SomeEvent(SomeEvent.SOMETHING_CHANGED);
e.propery1 = "AAA";
e.propery1 = "BBB";
dispatchEvent(e);
在此之后,我没有任何痕迹,因此事件并非如此。这是一个问题:做错了什么?
提前谢谢!
UPD:请注意,我发送的课程与SomeClass
不同,该课程延伸EventDispatcher
。
答案 0 :(得分:2)
您是否从名为SomeClass的班级调度?
var e = new SomeEvent(SomeEvent.SOMETHING_CHANGED);
e.propery1 = "AAA";
e.propery1 = "BBB";
dispatchEvent(e);
必须在SomeClass
内才能触发事件处理程序。或者您需要使用SomeClass
的实例发送它,如。
var e = new SomeEvent(SomeEvent.SOMETHING_CHANGED);
e.propery1 = "AAA";
e.propery1 = "BBB";
someClassInstance.dispatchEvent(e);