首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Flash >

一个类里面包含多个loader,对应同一个事件,如何在事件中区分哪个loader

2012-05-28 
一个类里面包含多个loader,对应同一个事件,怎么在事件中区分哪个loaderRT!利用as3.0开发,写了一个类,类中

一个类里面包含多个loader,对应同一个事件,怎么在事件中区分哪个loader
RT!
利用as3.0开发,写了一个类,类中有多个load类,这些load类都有相同的事件,怎么在这个事件中区分是来自哪个load触发的?
代码如下:

C/C++ code
 private var loader:Array=new Array();public function JStoAS(siteArray:Array)        {            trace("JStoAS");            for(var i:int=0;i<siteArray.length;i++)                {                var url=new URLRequest(siteArray[i]);                var loaderA:Loader=new Loader();                loader.push(loaderA);                loaderA.load(url);                loaderA.contentLoaderInfo.addEventListener(Event.COMPLETE,loaderComplete);                            loaderA.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,loaderProgress);                loaderA.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,loaderError);                                addChild(loaderA);            }             addChild(loadDisplay);            loadDisplay.width=300;        }    public function loaderProgress(evt:ProgressEvent):void        {            var percent:Number=Math.round((evt.bytesLoaded/evt.bytesTotal)*100);            //currentfileziize=evt.bytesLoaded;            loadDisplay.text+=percent+"%";            //trace(evt.target.toString());                    }   


[解决办法]
方法有很多。主要原因是flash没有同步锁。在java或c等语言里有多线程同步,但是as里没有。你可以自己写一个。不过过程比较繁琐。

另外的方法,你可以添加坚挺的时候多传几个参数来判断。
loaderA.contentLoaderInfo.addEventListener(Event.COMPLETE,function(e:Event){loaderComplete(e,参数,参数...)});

还有就是把自己写一个类继承loader。
[解决办法]
没那么复杂,自己写个类,扩展Loader类,再自定义一个事件,加个身份证就可以了。

热点排行