AS3: ожидание завершения нескольких загрузчиков - PullRequest
1 голос
/ 23 ноября 2011

У меня есть произвольное количество изображений, которые я хочу загрузить.Я хочу загрузить их, подождать, пока я получу Event.INIT для каждого, и только затем продолжить с остальной частью программы.

Я знаю, что могу сделать это, обновив прослушиватель Event.INIT и проверив егонекоторая переменная count, но это стандартный подход?Есть ли более элегантный или специфичный для AS способ?

Ответы [ 3 ]

2 голосов
/ 23 ноября 2011

Вы можете хранить все загрузчики в массиве и удалять их, когда они отправляют INIT

private function onInit(e:Event):void
{
  var loader:Loader = (e.currentTarget as LoaderInfo).loader;
  _loaders.splice(_loaders.indexOf(loader), 1);
  if (_loaders.length == 0)
    //do something
}

Вы также можете просто использовать переменную count, как вы говорите.Это нормально, так как загрузчик не будет отправлять INIT дважды.Но вам придется удалить загрузчик из массива или уменьшить счетчик событий ошибок.

1 голос
/ 24 ноября 2011

Лучший способ - использовать LoaderMax, разработанный greensock (разработчик TweenMax).

http://www.greensock.com/loadermax/

Вы можете создать группу загрузки и ожидать завершения события для этой группы. Код задокументирован очень хорошо.

Вот быстрый макет кода, чтобы дать вам представление о том, что вы можете ожидать:

mediaLoader = new LoaderMax( { name:"mediaLoader" } );
mediaLoader.addEventListener(LoaderEvent.PROGRESS, onMediaLoadProgress);
mediaLoader.addEventListener(LoaderEvent.COMPLETE, onMediaLoadComplete);
mediaLoader.addEventListener(LoaderEvent.ERROR, onMediaLoadError);

for (var i:int = 0; i < 10; i++)
{
    mediaLoader.append(LoaderMax.parse("image_" + i + ".jpg", { estimatedBytes: 100000 }));
}

Он также предоставляет специализированные загрузчики для изображений, видео, звука и т. Д. Вы можете использовать их в своих интересах или просто прозрачно обращаться с ними.

0 голосов
/ 23 ноября 2011

Там нет «стандартного подхода». Вы должны реализовать это самостоятельно с некоторым счетчиком, как сказал @Kodiak.

Но взгляните на библиотеку LoaderMax , если вам нужно что-то более сложное. Вы можете установить параметр maxConnections, чтобы определить, сколько материалов загружается за один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...