/ / AS3: in attesa che vengano caricati più caricatori: flash, actionscript-3

AS3: in attesa che vengano caricati più caricatori: flash, actionscript-3

Ho un numero arbitrario di immagini che voglio caricare. Voglio caricarli, attendere finché non ottengo Event.INIT per ciascuno, e solo dopo procedo con il resto del programma.

So che posso farlo avendo un aggiornamento listener di Event.INIT e controllo qualche variabile di conteggio, ma è questo l'approccio standard? C'è un modo più elegante o AS-specifico?

risposte:

1 per risposta № 1

Il modo migliore è usare LoaderMax, sviluppato da greensock (lo sviluppatore di TweenMax).

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

È possibile creare un gruppo di caricamento e attendere l'evento completo per quel gruppo. Il codice è documentato molto bene.

Ecco un rapido mockup di codice per darti un'idea di cosa puoi aspettarti:

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

Ti offre anche caricatori specializzati per immagini, video, suoni, ecc. Puoi usarli a tuo vantaggio o semplicemente trattarli in modo trasparente.


2 per risposta № 2

È possibile memorizzare tutti i caricatori in una matrice e rimuoverli quando inviano 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
}

Potresti anche usare una variabile count come tedire. Questo è ok, dal momento che un caricatore non ha inviato INIT due volte, ma dovrai rimuovere il caricatore dall'array o diminuire il contatore anche sugli eventi di errore.


0 per risposta № 3

Non esiste un "approccio standard". Devi implementarlo da solo con un contatore come ha detto @Kodiak.

Ma dai un'occhiata LoaderMax biblioteca se hai bisogno di qualcosa di più complesso. È possibile impostare il parametro "maxConnections" per determinare quanti oggetti viene caricato in una volta.