Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   упорядоченная массовая загрузка картинок (http://www.flasher.ru/forum/showthread.php?t=147464)

allanon85 05.12.2010 03:57

упорядоченная массовая загрузка картинок
 
Гружу кучку картинок, ссылки на них идут в определенном порядке. Если грузить поочередно, то это слишком долго. Поэтому хотелось бы грузить массой, но при этом у меня теряется очередность. То есть когда загружается какая либо картинка, я не знаю какая именно загрузилась.

гружу так:
Код AS3:

function startLoadPicObj()
{
        for (var i=0; i<=mapObjDataArr.length-1; i++)
        {
                var ldrObj:Loader= new Loader();
                var _arr:Array = mapObjDataArr[i].split("|");
                var urlReqObj:URLRequest = new URLRequest(_arr[0]);
                ldrObj.load(urlReqObj);
                ldrObj.contentLoaderInfo.addEventListener(Event.COMPLETE, completeLoadObj);
        }
}
function completeLoadObj(event:Event)
{
        ...
}

есть параметры на входе и выходе, такие как ссылка, вес и т.д. но они не подходят т.к. частенько совпадают.
Как еще можно отследить какая именно картинка загрузилась, либо быстро загрузить их все не теряя последовательность?

Bgg 05.12.2010 04:47

В массив Loader'ы складывайте, и как только все картинки загрузятся, то по порядку из этого массива их доставайте.

Gaen 05.12.2010 04:54

Дано: лоадер и данные, которые к нему нужно привязать. Создаем лоадер, подписываем на завершение загрузки, запускаем загрузку. После завершения загрузки можем получить лоадер через event.target.loader, но не можем достучаться до нужных данных.

Задача: обеспечить доступ к данным, имея ссылку на лоадер.

Решение: использовать Dictionary, предварительно прочитав мануалы. После создания лоадера засунуть в dictionary данные, используя лоадер в качестве ключа, после завершения загрузки - получить нужные данные.

Код AS3:

dict[loader] = someData;
...
someData = dict[event.target.loader];


allanon85 05.12.2010 05:11

Код AS3:

var ldrObj:Loader;
var objArr:Array;
var dict:Dictionary=new Dictionary();
function startLoadPicObj(num:Number)
{
        objLoad = num;
        for (var i=num; i<mapObjDataArr.length; i++)
        {
                ldrObj = new Loader();
                var _arr:Array = mapObjDataArr[i].split("|");
                var urlReqObj:URLRequest = new URLRequest(_arr[0]);
                ldrObj.load(urlReqObj);
                //objArr[i]=ldrObj;
                dict[ldrObj]=i;
                ldrObj.contentLoaderInfo.addEventListener(Event.COMPLETE, completeLoadObj);
        }
}
function completeLoadObj(event:Event){
        trace(dict[event.target]);//undefined
}

GAIKER,
такой пример я тут находил, но не получилось. может не так что то сделал. на выходе undefined

Bgg,
попытка запихнуть лоадер в массив вызывает ошибку. как запихивал показано в коде выше, вот эта строчка
Код AS3:

objArr[i]=ldrObj;


Bgg 05.12.2010 05:17

Экземпляр массива то создайте, и пихайте в массив методом push
Код AS3:

var objArr:Array = new Array();
//...
objArr.push(ldrObj);


Gaen 05.12.2010 05:19

Вечно забываю что слушается не сам лоадер, а его loaderInfo :)
Код AS3:

trace(dict[event.target.loader]);


allanon85 05.12.2010 05:24

Bgg,
создавал, просто он в самом верху.

GAIKER,
помогло, спасибо)

drnet_ua 05.12.2010 11:16

bulk-loader


Часовой пояс GMT +4, время: 18:09.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.