Нужно загрузить несколько изображений по ссылкам, хранящимся в массиве. Загруженные изображения сохраняю в другой массив.
Код 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-у, изображения грузятся куда надо.
Это уже не первый вариант. До этого делал циклом – тогда последнее изображение загружалось вместо всех предыдущих, т.к. цикл, не дождавшись окончания загрузки, шёл дальше.
Подскажите, как сделать? Раньше никогда не сталкивался с такой задачей. Делаю программу на конкурс, сегодня последний день.
14 марта 2010 в 18:05
удаляйте уже тему.
14 марта 2010 в 12:03
Чувак, ты крут!! Спасибо тебе огромное!!
14 марта 2010 в 12:01
я его все-таки прочитал. полагаю, что после GraphicsLayer.figures[_i].images[_j]=imgLoader; надо добавить imgLoader=new Loader();