RisorseFlash
a- a+

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.

Ti potrebbe interessare anche

commenta la notizia

C'è 1 commento
Graziano
Hai qualche domanda da fare?