如下面代碼:
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對象進行發布。