[英]AS3 - Unordered XML IMG loading
我有这段代码可以在我的项目中加载缩略图和完整图像:
private function processXMLHandle(e:Event):void
{
var xml:XML = new XML(e.target.data);
for each (var line:XML in xml.IMAGE)
{
var file:String = line.@THUMB;
var loader:Loader = new Loader();
loader.load(new URLRequest(file));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
var fileFull:String = line.@FULL;
var loaderFull:Loader = new Loader();
loaderFull.load(new URLRequest(fileFull));
loaderFull.contentLoaderInfo.addEventListener (Event.COMPLETE, completeFullHandler);
}
myXMLLoader.removeEventListener(Event.COMPLETE, processXMLHandle);
}
当我推送为此创建的数组时,图像以未排序的顺序出现。
我的一个朋友告诉我,正在发生类似的事情:“小文件首先出现”。 他告诉我问题出在装载机,但他帮不了我。
谁能告诉我怎么了?
谢谢!
最好的方法是在代码中增加一些结构。
首先,创建一个类(负责将其称为ImageLoader)来加载缩略图和完整图像。 这将是一个具有2个Loader实例的类。 为每个项目创建此类的实例,然后在开始之前将它们推入数组。
阵列装满后,请对阵列进行迭代,以指示ImageLoader实例启动。 该方法将依次调用其每个Loader实例的load方法。
两个加载器都完成后, 发出一个自定义ImageLoaderComplete事件,指示该事件已完成。
在更高级别上,在与包含ImageLoader实例数组的类相同的类中,侦听从每个ImageLoader实例发出的自定义事件。 算上它们。计数完阵列中的所有项目后,加载完成,阵列保持与开始时相同的顺序,并方便地将拇指和完整图像分组。
看起来您正在遍历包含图像列表的给定XML文档,并以循环方式异步加载图像。 这样做显然会导致较小的图像首先完成,从而引发Event.COMPLETE事件。 发生这种情况是因为您要求Flash立即开始并发加载所有图像。
您可能想要做的是改为通过首先加载第一个图像来循环加载图像...在执行Event.COMPLETE图像时,继续加载下一个图像,依此类推,直到全部完成。 这样做将迫使您的应用程序按照XML中定义的顺序加载图像,并且每次都像队列一样加载图像。
祝好运!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.