Нужно загрузить несколько изображений по ссылкам, хранящимся в массиве. Загруженные изображения сохраняю в другой массив.
Код 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-у, изображения грузятся куда надо.
Это уже не первый вариант. До этого делал циклом - тогда последнее изображение загружалось вместо всех предыдущих, т.к. цикл, не дождавшись окончания загрузки, шёл дальше.
Подскажите, как сделать? Раньше никогда не сталкивался с такой задачей. Делаю программу на конкурс, сегодня последний день. :(
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.