Беда с грузчиком. Закрыть - PullRequest
0 голосов
/ 27 июня 2011

Кто-нибудь может объяснить, почему 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 голосов
/ 27 июня 2011

Вы получаете что-нибудь из следа?

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(), то оно " Отменяет операцию метода load (), которая в данный момент выполняется для экземпляра Loader ." Если в Loader не происходит load(), то, вероятно, ничего не произойдет.

P.S .: в своем выражении try вы создаете новый Loader каждый раз, прежде чем назначить его чему-то другому. Просто измените его на

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