如下面代码:
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.events.EventDispatcher;
public class TestAction extends Sprite
{
private var _dispatcher:EventDispatcher;
public function TestAction()
{
_dispatcher = new EventDispatcher();
addEventListener(Event.ENTER_FRAME,__enterFrame);
_dispatcher.addEventListener(TestEvent.TEST,__test);
}
private var e:TestEvent = new TestEvent(TestEvent.TEST);
private function __enterFrame(event:Event):void
{
_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对象进行发布。