singlepost

AS3 – проблема с загрузкой изображений << На главную или назад  

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

private var imgLoader:Loader=new Loader();
private var _i:int=0, _j:int=0;
// функция загружает изображения для карты (рекурсивно)
public function loadImages():void{
trace(GraphicsLayer.figures[_i].imageURL[_j]);
imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadingImageComplete);
imgLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, handlerForIOError);
imgLoader.load(new URLRequest(GraphicsLayer.figures[_i].imageURL[_j]));
private function loadingImageComplete(e:Event):void{
imgLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, loadingImageComplete);
imgLoader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, handlerForIOError);
GraphicsLayer.figures[_i].images[_j]=imgLoader;
trace("Загружено в "+(_j).toString());
_j++;
if(_j==GraphicsLayer.figures[_i].imageURL.length){_j=0; _i++;}
if(_i==GraphicsLayer.n){_i=0; _j=0; return}
loadImages();
}
private function handlerForIOError(e:Event):void{
trace("Error: Неудачная попытка загрузки изображения "+
GraphicsLayer.figures[_i].imageURL[_j]);
_j++;
if(_j==GraphicsLayer.figures[_i].imageURL.length){_j=0; _i++;}
if(_i==GraphicsLayer.n){_i=0; _j=0; return}
loadImages();
}

В результате всегда загружается только последнее изображение. Никаких сообщений об ошибке при этом не выводится. Судя по trace-у, изображения грузятся куда надо.
Это уже не первый вариант. До этого делал циклом – тогда последнее изображение загружалось вместо всех предыдущих, т.к. цикл, не дождавшись окончания загрузки, шёл дальше.
Подскажите, как сделать? Раньше никогда не сталкивался с такой задачей. Делаю программу на конкурс, сегодня последний день.

19 ответов в теме “AS3 – проблема с загрузкой изображений”

  1. 3
    Леонид Максимов ответил:

    удаляйте уже тему.

  2. 2
    Денис Слепцов ответил:

    Чувак, ты крут!! Спасибо тебе огромное!! :-)

  3. 1
    Леонид Максимов ответил:

    я его все-таки прочитал. полагаю, что после GraphicsLayer.figures[_i].images[_j]=imgLoader; надо добавить imgLoader=new Loader();

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.