Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Gestire e caricare i suoni

Il caricamento dei suoni e le funzioni necessarie nel game engine
Il caricamento dei suoni e le funzioni necessarie nel game engine
Link copiato negli appunti

In questo articolo continuiamo ad occuparci della gestione degli asset in un gioco HTML5, passando ad esaminare il caricamento dei suoni e definendo la funzione LoadSounds

function ResourcesHandler(callback) {
	/* dichiarazione proprietà */
	// ...
	/* caricamento sprite e immagini */
	// ...
	/* controllo caricamento immagini */
	// ...
	/* disegno del loader */
	// ...
	/* caricamento dei suoni */
	this.LoadSound = function(url, formats) {
		this.loading = true;
		var sound = new Audio();
		sound.src = url+"."+formats[0];
		sound.formatIndex = 0;
		sound.volume = 0.05;
		this.resNumber++;
		sound.rh = this;
		sound.addEventListener("canplaythrough", function() {
			this.rh.resLoaded++;
			this.rh.CheckLoaded();
		}, false);
		sound.addEventListener("error", function(e) {
			if(++this.formatIndex >= formats.length) {
				this.rh.errors.push([url, e.currentTarget.error.code]);
				this.rh.CheckLoaded();
			} else {
				this.src = url+"."+formats[this.formatIndex];
			}
		});
		return sound;
	}
}

Argomento Descrizione
url L'URL del suono da caricare (senza estensione)
formats un array di formati audio che possiamo caricare (mp3, ogg)

Questa funzione crea un elemento audio, lo salva in una variabile sound e successivamente imposta il source e il volume.

Come per le immagini, incrementa il numero di suoni da caricare e salva un riferimento a ResourceHandler.

Per gli elementi audio, esiste l'evento canplaytrough, che esegue una funzione quando il suono può essere riprodotto. Passiamo come argument una funzione che incrementa il numero di risorse caricate e chiama CheckLoaded.

L'evento error dei suoni dovrà invece essere gestito, poiché alcuni browser non supportano alcuni formati audio molto utilizzati (al momento opera non supporta gli mp3 e internet explorer 11 gli ogg vorbis), di conseguenza perché l'audio funzioni su tutti i browser, bisognerà caricare i suoni in entrambi i formati, utilizzare quello supportato dal browser, e passare come argument "formats" un array di 2 elementi.

Infatti se vi verificasse un errore, la funzione proverà a caricarlo con l'altro formato. Ad esempio:

LoadSound("sounds/jump", ["mp3", "ogg"]);

Troviamo il file completo del ResourceHandler in allegato.

Ti consigliamo anche