Preload con percentuale
Premessa: Ho deciso di scrivere questo tutorial sui preloader in Flash principalmente per fare chiarezza dentro di me su questa abbastanza impegnativa discussione. Premetto che il materiale che troverete qui è un mio rielaborato di conoscenze prese, copiate e affinate presso altri siti.
Diamo allora un'occhiata al codice del preloader:
onClipEvent (load) {
if (_root.getBytesTotal()<1000) {
unit = "bytes";
total = Math.floor(_root.getBytesTotal()) + unit;
} else if (_root.getBytesTotal()>1000000) {
unit = "mb";
total = Math.floor(_root.getBytesTotal() /1000000) + unit;
} else {
unit = "kb";
total = Math.floor(_root.getBytesTotal() /1000) + unit;
}
}
onClipEvent (enterFrame) {
percentuale = Math.floor( _root.getBytesLoaded()/_root.getBytesTotal()*100)+ "%";
if (unit =="bytes") {
progress_fleche.parte = Math.floor(_root.getBytesLoaded()) + "bytes";
} else if (unit =="mb") {
risultati = _root.getBytesLoaded() /1000000;
risultati = Math.round(risultati*100);
risultati = risultati/100;
progress_fleche.parte = risultati + "mb";
} else {
progress_fleche.parte = Math.floor(_root.getBytesLoaded() /1000) + "kb";
}
Analizziamo il codice:
- la prima operazione effettuata è la scelta
dell'unità di misura più appropriata.
Si legge la grandezza totale del filmato in bytes con
_root.getBytesTotal() e si fanno delle verifiche.
Il valore totale sarà poi visualizzato nella stringa
total a destra della barra di scorrimento
- Bisogna visualizzare la percentuale di caricamento
parziale: la funzione è più o meno simile a
quella della versione 4 e si calcola:
(_root.getBytesLoaded()/_root.getBytesTotal()*100)
Abbiamo aggiunto la funzione Math.floor che restituisce il
numero arrotondato in difetto.
- Gestiamo ora la freccia: la prima problematica è la gestione dell'unità di misura. Noi segnaliamo oltre la percentuale anche la grandezza caricata, ma utilizziamo differenti unità di misura, mentre il metodo restituisce solamente i bytes caricati. Quindi dovremo crearci un sistema di conversione:
- se utilizziamo i bytes non c'è nessun
problema
- se utilizziamo i KBytes basterà dividere per
1000
- se utilizziamo i MBytes la questione è più
complessa perchè arrotonderemmo 0.5 Mb in 0 mb e non
è esattamente la stessa quantità! Quindi
è meglio utilizzare qualche passaggio in più:
- Dividiamo il totale per 1.000.000
- Il risultato va moltiplicato per 100 al numero intero più vicino (con la funzione Math.round)
- Dividiamo di nuovo per 100 il risultato
onClipEvent(enterFrame) {
this.x = ( _root.getBytesLoaded()/_root.GetBytesTotal()*100);
}
- Ed infine anche la barra di caricamento dovrà
avanzare in base alla percentuale caricata.
Quindi il codice sarà lo stesso.
Terminato il caricamento bisogna posizionarci all'inizio affettivo del nostro filmato. Perciò aggiungiamo questa ultima istruzione:
onClipEvent(enterFrame) {
if (percentuale=="100%"){
_root.gotoAndStop(10);
}
}
E con questo finisce il nostro trattato sul preload in Flash5.