/ / AS3: oczekiwanie na zakończenie wielu ładowarek - flash, actionscript-3

AS3: oczekiwanie na zakończenie wielu ładowarek - flash, actionscript-3

Mam dowolną liczbę obrazów, które chcę załadować. Chcę je załadować, poczekać, aż dla każdego otrzymam INICJONUJĄCY Event, a dopiero potem przejść do reszty programu.

Wiem, że mogę to zrobić przez aktualizację nasłuchiwania Event.INIT i sprawdzenie zmiennej licznika, ale czy jest to podejście standardowe? Czy istnieje bardziej elegancki lub specyficzny dla AS sposób?

Odpowiedzi:

1 dla odpowiedzi № 1

Najlepszym sposobem jest użycie LoaderMax, opracowanego przez greensock (twórcę TweenMax).

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

Możesz utworzyć grupę ładowania i czekać na kompletne wydarzenie dla tej grupy. Kod jest udokumentowany bardzo dobrze.

Oto szybka makieta kodu, która daje wyobrażenie o tym, czego możesz oczekiwać:

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 }));
}

Daje także specjalistyczne ładowarki do zdjęć, wideo, dźwięku itp. Możesz ich używać na swoją korzyść lub po prostu traktować je w sposób przejrzysty.


2 dla odpowiedzi nr 2

Możesz zapisać każdy program ładujący w tablicy i usunąć go, gdy wywołają 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
}

Możesz także użyć zmiennej licznika, jak tymówić. Jest to w porządku, ponieważ program ładujący dwukrotnie nie wywoła INIT. Ale będziesz musiał usunąć program ładujący z tablicy lub zmniejszyć licznik w zdarzeniach błędu.


0 dla odpowiedzi № 3

Nie ma „standardowego podejścia”. Musisz je zaimplementować samodzielnie, używając licznika, jak powiedział @Kodiak.

Ale spójrz na LoaderMax biblioteka, jeśli potrzebujesz czegoś bardziej złożonego. Można ustawić parametr „maxConnections”, aby określić, ile elementów ładuje się jednocześnie.