[AS3]调度事件的古怪问题
墨初 知识笔记 75阅读
如下面代码字体http://www .Sina.com/{package快讯。展示雪碧;import闪电侠。事件。事件;import闪电侠。事件。事件调度程序;importpublic测试动作class雪碧{extendsprivate}调度员:事件调度员;nbsppublicfunction测试动作(){ _ dispatcher=new事件调度器();addEventListener(事件. ENTER_FRAME,_ _ ENTER FRAME);_调度员。添加事件侦听器(TestEvent .测试,_ _测试);}privatevar
"> e:TestEvent = new TestEvent(TestEvent.TEST);![[AS3]调度事件的古怪问题](https://www.feiniaomy.com/xzm_artimg/230916131671s085003507_0.png)
private function __enterFrame(event:Event):void
![[AS3]调度事件的古怪问题](https://www.feiniaomy.com/xzm_artimg/230916131671s085003507_1.png)
{
_dispatcher.dispatchEvent(e);
}
private function __test(event:TestEvent):void
{
trace(event);
}
}
}
此代码会报如下错误:
TypeError: Error #1034: 强制转换类型失败:无法将 flash.events::Event@1967b21 转换为 TestEvent。
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at TestAction/__enterFrame()[E:\Flash\TestAction\TestAction.as:23]
原因 变量 e在dispatch后再调用第二此dispatch就会报如下错误,由此可见,如果Event如果已经dispatch,调用_dispatcher.dispatchEvent(e),_dispatcher会new 一个Event对象进行发布。