di: Giorgo Sardo 03 Dicembre 2011
A seconda delle caratteristiche della rete è sempre necessario considerare i ritardi che possono incorrere tra l'aggiunta del tag, il caricamento della risorsa e la sua riproduzione. In particolare, quando si gestiscono file multipli ogni file potrebbe essere pronto per essere riprodotto prima o dopo. Nella figura qui sotto, ad esempio, è visualizzata l'analisi di riproduzione dei tre file usati poco sopra, ma caricati dal localhost.
Come si può notare dalla colonna Timings, file differenti possono essere pronti in momenti differenti.
Una comune tecnica di sincronizzazione è quella di precaricare i file all'inizio. Una volta che sono pronti, è possibile usare un loop di iterazione per cominciare a riprodurli.
var audios = [];
var loading = 0;
AddNote("2C");
AddNote("2E");
AddNote("2G");
AddNote("3C");
AddNote("3E");
AddNote("3G");
AddNote("4C");
function AddNote(name) {
loading++;
var audio = document.createElement("audio");
audio.loop = true;
audio.addEventListener("canplaythrough", function () {
loading--;
if (loading == 0) // Tutti i file sono precaricati
StartPlayingAll();
}, false);
audio.src = "piano/" + name + ".mp3";
audios.push(audio);
}
function StartPlayingAll() {
for (var i = 0; i < audios.length; i++)
audios[i].play();
}
Bene, mettiamo tutto insieme. Il prossimo esempio simula un pianoforte che riproduce il motivo Frère Jacques (conosciuto anche come Brother John, Brother Peter o Fra' Martino). La pagina comincia con il recuperare ogni nota, mostrando il progresso di caricamento nel client. Una volta che i file sono pronti, parte la canzone e continua ed essere riprodotta in loop.
Guida Node.jsIl framework che permette di per usare V8, l'interprete JavaScript... |
Canvas, guida ai frameworkCanvas, tra gli elementi di HTML5 è forse quello di maggior impatto.... |
Guida jQuery UICreare siti ricchi e dinamici con jQuery UI, il progetto ufficiale... |
Ogni martedì, direttamente nella tua e-mail: guide, articoli, script, novità e approfondimenti tecnici su JavaScript.
Iscriviti alla newsletter
|
|
Corso Webmaster base18 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso JQuery e Ajax per Webmaster03 Luglio 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |
|
|
Corso Webmaster base11 Giugno 2012 a Roma |