[AS2] LoaderManager.class
Caricamenti multipli con poco codice.
Inserito il 19-04-2009
La classe LoaderManager consente di effettuare e gestire facilmente i caricamenti multipli, basandosi sulla classe MovieClipLoader, già trattata in precedenza.
Sfrutta gli stessi eventi della classe MovieClipLoader oltre ad uno aggiuntivo, onMultipleLoadComplete che viene elaborato quando tutti i file esterni sono stati caricati.
La classe è di tipo singleton, ossia non possono esistere più istanze della stessa nella stessa applicazione e le azioni vengono richiamate direttamente dal nome della classe stessa.
I metodi della classe sono in ordine:
- addLoader(target:MovieClip, str_url:String): avvia il caricamento del file str_url sul target specificato;
- forEachProperty (str_property:String, value:Object): una funzione di supporto che serve ad accelerare la gestione delle proprietà in tutti i clip coinvolti nei caricamenti e registrati nella classe.
- getInstance(): restituisce l'unica istanza disponibile per la gestione degli eventi;
Mentre le proprietà sono:
- loaders: restituisce un array contenente la lista dei movieclip registrati nella classe dal metodo addLoader;
- bytesLoaded: restituisce la somma dei bytes caricati di tutti i clip registrati nella classe dal metodo addLoader;
- bytesTotal: restituisce la somma dei bytes totali di tutti i clip registrati nella classe dal metodo addLoader;
Infine, per completezza nella lista, ricapitoliamo gli eventi disponibili per la classe:
- onLoadStart: richiamato al momento preciso in cui inizia il caricamento su un singolo clip;
- onLoadProgress: richiamato più volte durante il progresso del caricamento;
- onLoadComplete: richiamato nel momento in cui finisce il caricamento di ogni singolo clip;
- onLoadInit: richiamato nel momento in cui il file esterno diventa realmente fruibile all'interno del singolo clip;
- onLoadError: richiamato in caso di un qualsiasi intoppo nelle azioni sul singolo caricamento;
- onMultipleLoadComplete: richiamato solo quando tutti i file esterni sono stati caricati nei rispettivi contenitori.
Per finire facciamo un esempio pratico di utilizzo della classe con un caricamento unico di tre immagini e l'ordinamento delle stesse a caricamento completato:
var listener:LoaderManager = LoaderManager.getInstance();
listener.onLoadStart = function (t) {
trace ("Load Started for "+t);
}
listener.onLoadProgress = function (t, bl, bt) {
var car = LoaderManager.bytesLoaded;
var tot = LoaderManager.bytesTotal;
var prc = Math.floor((car/tot)*100);
trace(prc+"% : "+car+" di "+tot);
}
listener.onLoadComplete = function (t) {
trace ("Load Completed for "+t);
}
listener.onLoadInit = function (t) {
trace(LoaderManager.loaders.length);
trace ("MovieClip initialization for "+t);
}
listener.onMultipleLoadComplete = function () {
trace(LoaderManager.loaders.length);
for (var i=0; i<LoaderManager.loaders.length; i++) {
LoaderManager.loaders[i]._x = i*200;
}
}
var a:Array = ["albero", "cascate", "pesce"];
for (var i:Number=0; i<a.length; i++) {
LoaderManager.addLoader(this.createEmptyMovieClip("mc"+i, i), a[i]+".jpg");
trace(LoaderManager.loaders.length);
}
Potete scaricare la classe con l'esempio (escluse le immagini) dal link: ../classes/loader_manager.zip, saluti.
