我正在用URLLoader加载多个xml文件。
for (var i=0;i<xmlCount;i++) {
loadXML(xmlFiles[i], i);
}
public function loadXML(req:String=null, _id:Number=0):void {
var loader:URLLoader = new URLLoader();
loader.addEventListener(ProgressEvent.PROGRESS,
function a(e:ProgressEvent) {XMLLoadProgress(e, _id);});
loader.addEventListener(Event.COMPLETE, XMLLoadFinished);
loader.load(new URLRequest(req));
}
private function XMLLoadProgress(e:ProgressEvent=null, _id:Number=0):void {
dispatchEvent(new LoadingEvent(Model.LOADING_PROGRESS, _id, (e.bytesLoaded/e.bytesTotal)*100));
}问题是,我认为LOADING_PROGRESS是在所有加载完成之后才调度的,每个xml都是一个接一个地加载的,而不是异步加载的。
我怎样才能让它异步加载,并且让它的进度事件在每个进度节拍中被调用。
发布于 2010-06-04 15:01:03
我猜只有在通过快速连接观看时才会发生这种情况。尝试使用慢速连接进行查看(Charles Proxy具有人为降低连接速度的能力)。
发布于 2013-01-14 20:00:12
您可以自定义URLLoader。
public function SequenceLoader extends URLLoader {
private var index:int;
public function SequenceLoader(index:int) {
this.index = index;
}
}然后在每个loadXML中,标记加载器:
public function loadXML(req:String=null, _id:Number=0):void {
var loader:SequenceLoader = new SequenceLoader(_id);
loader.addEventListener(ProgressEvent.PROGRESS,
function a(e:ProgressEvent) {XMLLoadProgress(e);});
loader.addEventListener(Event.COMPLETE, XMLLoadFinished);
loader.load(new URLRequest(req));
}
private function XMLLoadProgress(e:ProgressEvent=null):void {
var loader:SequenceLoader = e.target as SequenceLoader;
var loaderIndex:int = loader.index;
//do other stuff
}https://stackoverflow.com/questions/2969428
复制相似问题