如下面代码:

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)_dispatchernew 一个Event对象进行发布。

posted on 2008-12-10 09:32  以天  阅读(1299)  评论(0编辑  收藏  举报