codice:
// keyframe numero 2, dove metto sullo stage , in un layer dedicato,
// la progressBar istanziandola come pBar
// e con il mode impostato in manual
// mi fermo qua' ...
stop();
// creo un listener in grado di effettuare
// quello che mi serve a load completato
var what2do:Object = new Object();
// gli schiaffo dentro il path
// [ perche' mi serve, non perche' sia indispensabile ]
what2do.path = this;
// gli assegno il metodo complete
what2do.complete = function( eventObject ){
// faccio quello di cui ho bisogno
delete this.path.onEnterFrame;
this.path.gotoAndStop(3);
}
// assegno alla pBar questo Listener
pBar.addEventListener("complete", what2do);
// ora controllo che questo swf sia gia' in cache
if( this.getBytesLoaded() >= this.getBytesTotal() ) {
// perche' se cosi' e', dichiaro subito complete
// la pBar cosi' da far partire il metodo del listener
what2do.complete( { type:"complete" } );
}
else {
// altrimenti:
// mi prendo i dati attuali una sola volta
// [ sottratti ai caricati ed al totale mi dara'
// il giusto metro per una percentuale da 0 a 100 ]
var rb:Number = this.getBytesLoaded();
// faccio un onEnterFrame ...
this.onEnterFrame = function() {
// ... dove prendo i loaded come valore minimo
// [ meno i gia' caricati rappresentati da rb]
var lb:Number = this.getBytesLoaded() - rb;
// i total come valore massimo
// [ proporzionati sempre da rb, anche qui sottratto ]
var tb:Number = this.getBytesTotal() - rb;
// ... per passare valoreminimo e valoremassimo alla scrollbar
pBar.setProgress(lb, tb);
}
}
N.B. come tutti i components il barLoader e' molto potente ( e quindi pesante ... ) , da solo prende 25 Kb solo per fare la sua coparsa.
E' fondamentale non metterlo al primo keyframe perche' altrimenti ti vedresti la barra non partire mai da 0 ma sempre da piu' avanti ( come tutti i preloader a frame 1 daltronde ... )
P.S. questo e' solo uno dei modi di utilizzare questo component