Actionscript 3 IEventDispatcher

Actionscript 3 IEventDispatcher,actionscript-3,Actionscript 3,这段代码来自: 有人能告诉我为什么loader.contenLoaderInfo(作为参数传递给configureListeners)是IEventDispatcher(而不是LoaderInfo)对象吗?LoaderInfo扩展了EventDispatcher,后者反过来实现了接口IEventDispatcher。我不认为有任何理由这样做,除了它是发送事件调度器的最通用的方式 这意味着您可以将该函数改为接受LoaderInfo,它的工作原理完全相同,但如果您希望将该函数用于调度事件的其他对象,

这段代码来自:


有人能告诉我为什么loader.contenLoaderInfo(作为参数传递给configureListeners)是IEventDispatcher(而不是LoaderInfo)对象吗?

LoaderInfo扩展了EventDispatcher,后者反过来实现了接口IEventDispatcher。我不认为有任何理由这样做,除了它是发送事件调度器的最通用的方式


这意味着您可以将该函数改为接受LoaderInfo,它的工作原理完全相同,但如果您希望将该函数用于调度事件的其他对象,则它不会像通用函数那样工作

LoaderInfo扩展了EventDispatcher,后者又实现了IEventDispatcher接口。我不认为有任何理由这样做,除了它是发送事件调度器的最通用的方式

这意味着您可以将该函数改为接受LoaderInfo,它的工作原理完全相同,但如果您希望将该函数用于调度事件的其他对象,则它不会像通用函数那样工作

package {
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.events.*;
    import flash.net.URLRequest;

    public class LoaderExample extends Sprite {
        private var url:String = "Image.gif";

        public function LoaderExample() {
            var loader:Loader = new Loader();
            configureListeners(loader.contentLoaderInfo);
            loader.addEventListener(MouseEvent.CLICK, clickHandler);

            var request:URLRequest = new URLRequest(url);
            loader.load(request);

            addChild(loader);
        }

        private function configureListeners(dispatcher:IEventDispatcher):void {
            dispatcher.addEventListener(Event.COMPLETE, completeHandler);
            dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
            dispatcher.addEventListener(Event.INIT, initHandler);
            dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
            dispatcher.addEventListener(Event.OPEN, openHandler);
            dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
            dispatcher.addEventListener(Event.UNLOAD, unLoadHandler);
        }

 private function completeHandler(event:Event):void {
            trace("completeHandler: " + event);
        }
//...
}