如果我这样做
stuff.addEventListener(FooEvent.NAME, function(e:FooEvent) {
dispatchEvent(e);
}
我收到运行时错误,指出Event无法转换为FooEvent。 但是,如果我这样做,它可以正常工作:
stuff.addEventListener(FooEvent.NAME, function(e:FooEvent) {
dispatchEvent(new FooEvent(e.things));
}
为什么?
答案 0 :(得分:3)
dispatchEvent在传递的事件上调用clone
,如果该事件已被“使用”(即已被调度)。从你所说的,我很确定你没有覆盖FooEvent
的{{1}} - 方法,因此它使用clone
的实现,它返回一个普通的Event
。这是你错误的根源。
您需要覆盖Event
中的clone
方法,才能返回FooEvent
的相应实例。