ActionScript 3事件转发非法?

时间:2010-03-03 10:19:13

标签: flash actionscript-3 events

如果我这样做

stuff.addEventListener(FooEvent.NAME, function(e:FooEvent) {
   dispatchEvent(e);
}

我收到运行时错误,指出Event无法转换为FooEvent。 但是,如果我这样做,它可以正常工作:

stuff.addEventListener(FooEvent.NAME, function(e:FooEvent) {
   dispatchEvent(new FooEvent(e.things));
}

为什么?

1 个答案:

答案 0 :(得分:3)

dispatchEvent在传递的事件上调用clone,如果该事件已被“使用”(即已被调度)。从你所说的,我很确定你没有覆盖FooEvent的{​​{1}} - 方法,因此它使用clone的实现,它返回一个普通的Event。这是你错误的根源。

您需要覆盖Event中的clone方法,才能返回FooEvent的相应实例。