【问题标题】:(AS3) Loading Thumbnails from XML in Numerical / Descending Order(AS3) 以数字/降序从 XML 加载缩略图
【发布时间】:2012-04-26 05:48:50
【问题描述】:

自从我开始调试我的代码以使其正常工作以来,已经有 2 天了,而且我一直在计数,它占用了我所有的时间,如果我不开始询问,我认为我不会达到我的最后期限。

我不是专业人士,所以请对代码保持温和。 :D

图库运行良好,可以顺利加载缩略图而不会返回任何错误。但是,缩略图没有按预期加载,我认为是因为最小的文件大小首先加载。因此,如果 thumbnail[3] 是最小的,它将自己附加到 thumbnail_container[0],它应该始终是 thumbnail[0] 到 thumbnail_container[0] 等等。

这是我的代码:

        //THIS IS THE CONTAINER         
        for (var i:int = 0; i < thumbBatches[aj]; i++)
        {
            thumbX = 44.35 + (thumbWidth + 18) * i;
            var itemThumb:thumbH = new thumbH();
            itemThumb.x = thumbX;
            itemThumb.y = thumbY;
            itemThumb.name = "" + i + (8 * aj);
            itemThumb.addEventListener(MouseEvent.CLICK, openFullItem);
            level2.addChild(itemThumb);
            IthumbList[i + (8 * aj)] = itemThumb;
        }

        //THIS WILL LOAD THE THUMBNAILS
        for (var n:int = 0; n < potteryIDnum.length; n++)
        {
            var imgLoader:Loader = new Loader();
            imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
            imgLoader.load(new URLRequest(potteryThumbs[n]));
        }

        // AFTER LOADING IT, IT'LL BE ASSIGNED TO AN ARRAY
       // THEN AFTER THE LAST IMAGE HAS BEEN LOADED WILL BE ATTACHED TO THE CONTAINER
        function loadComplete(e:Event):void
        {
            IthumbImages.push(e.target.content);
            if (IthumbList.length == IthumbImages.length)
            {
                for (var k:int = 0; k < IthumbImages.length; k++)
                {
                    var fadeInThumbs:Tween = new Tween(IthumbList[k],"alpha",Strong.easeInOut,0,1,0.3 * (k + 0.5),true);
                    IthumbList[k].addChild(IthumbImages[k]);
                }
            }
        }

提前致谢!

【问题讨论】:

    标签: xml actionscript-3 gallery thumbnails loader


    【解决方案1】:

    我已经回复similar question。然而,那是关于 URLLoader 类的。

    对于Loader类案例,应该是:

        dynamic class DynamicLoader extends Loader{}
    

    最后,修改后的代码:

        var remainingLoads:uint = potteryIDnum.length; 
        //THIS WILL LOAD THE THUMBNAILS
        for (var n:int = 0; n < potteryIDnum.length; n++)
        {
            var imgLoader:DynamicLoader = new DynamicLoader();
            imgLoader.index = n;
            imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
            imgLoader.load(new URLRequest(potteryThumbs[n]));
        }
    
        // AFTER LOADING IT, IT'LL BE ASSIGNED TO AN ARRAY
        // THEN AFTER THE LAST IMAGE HAS BEEN LOADED WILL BE ATTACHED TO THE CONTAINER
        function loadComplete(e:Event):void
        {
            IthumbImages[ DynamicLoader(e.target.loader).index ] = e.target.content;
            if (--remainingLoads == 0)
            {
                for (var k:int = 0; k < IthumbImages.length; k++)
                {
                    var fadeInThumbs:Tween = new Tween(IthumbList[k],"alpha",Strong.easeInOut,0,1,0.3 * (k + 0.5),true);
                    IthumbList[k].addChild(IthumbImages[k]);
                }
            }
        }
    

    【讨论】:

    • 遗憾的是,它没有按预期工作。它不会加载所有缩略图然后它会停止(返回一个空错误)孩子(在 addchild 上)不存在。 IDK 如果我通过扩展加载器类所做的事情是正确的。 package com.dloader { import flash.display.Loader; public dynamic class DynamicLoader extends Loader {; public function DynamicLoader() { super(); } } }我现在不习惯类/外部.as。
    • 尝试调试IthumbImages[ DynamicLoader(e.target.loader).index ] = e.target.content; 部分,并查看DynamicLoader(e.target.loader).indexe.target.content 值。
    【解决方案2】:

    我认为你的问题在于这条线。

     IthumbList[i + (8 * aj)] = itemThumb;
    

    什么是aj
    如果 aj == 1 且 i == 1 则数组的索引将为 9
    如果 aj == 2 且 i == 1 则数组的索引将为 16

    oncomplete 中的 for 循环应该因此而失败。

    【讨论】:

    • aj = 0,仅按批次(行)递增。每批 8 个缩略图,所以如果 aj == 1,它将是第 9 个缩略图,这是正确的。如果我错过了索引,它将无法运行。我可以正确跟踪每个缩略图的索引。它在适当的位置,但附加的位图(jpg)不是。正如我所提到的,要加载的第一个位图将在 [0] 上,即使该缩略图的 url 来自 [6](或任何其他数字)。
    猜你喜欢
    • 2016-06-13
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    • 2012-06-17
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    相关资源
    最近更新 更多