装载机故障。关闭

时间:2011-06-27 15:19:51

标签: flash actionscript-3 loader

任何人都可以解释一下,为什么loader.close不起作用? 顺便说一下,我知道从服务器上加载文件。

for (var p:Number = 0; p < itemsOnPage; p++) 
{
    if (itterationStep != SqlRec.itemsArray.length) 
    {
        thumbImgLoader = new Loader();
        var imgName:String = SqlRec.itemsArray[itterationStep]["img"];
        thumbImgLoader.load(new URLRequest(GetXMLprefs.thumbsPath + imgName));
        thumbLoadersArray.push(thumbImgLoader);
        ...
    }
}

/////

if (ItemsBuilder.thumbLoadersArray) 
{
    if(ItemsBuilder.thumbLoadersArray.length > 0)
    {
        for (var i:Number = 0; i < ItemsBuilder.thumbLoadersArray.length; i++) 
        {
            try 
            {
                var obj:Loader = new Loader();
                obj = ItemsBuilder.thumbLoadersArray[i];
                obj.close();
                trace(">> "+obj.close);
            }catch (err:Error) 
            {
                trace(err)
            }
        }
        ItemsBuilder.thumbLoadersArray.splice(0, ItemsBuilder.thumbLoadersArray.length);
    }
}

1 个答案:

答案 0 :(得分:0)

你是否从追踪中得到了什么?

Flash有一个内部限制,它可以同时执行多少个同时加载。你在一个循环中加载了800个图像,这意味着第一个〜780左右将被最后20个左右覆盖。我一次加载的最大值大约为10(我认为BulkLoader有类似的东西)。如果要加载800个图像,请使用该数组来跟踪加载的内容。例如:

private var m_imagesLoaded:int = 0;
private var m_toLoad:Array = null;

private function _init():void
{
    // create your array and set the first 10 or so loading
    this.m_toLoad = new Array( 800 );
    ...
}

private function _onImageLoad( e:Event ):void
{
    // load the next one in the list
    this.m_imagesLoaded++;
    this.m_toLoad[this.m_imagesLoaded].load();

    // do whatever else
}

至于close(),它是“Cancels a load() method operation that is currently in progress for the Loader instance。”如果load()中没有Loader,那么可能不会发生任何事情。

P.S。:在try语句中,您每次都会创建一个新的Loader,然后再将其分配给其他人。只需将其更改为

即可
var obj:Loader = ItemsBuilder.thumbLoadersArray[i];