繁体   English   中英

AS3-无序XML IMG加载

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM