Un articolo che descrive esattamente questo tra cui una demo può essere trovato here.
Per evitare legame marciume sarò citando le parti più rilevanti sotto
Per fortuna, Web Audio API viene fornito con built-in con accelerazione hardware caratteristiche audio posizionale che sono abbastanza semplice da usare.
L'idea centrale è dimostrato nel seguente codice:
PositionSample.prototype.changePosition = function(position) {
// Position coordinates are in normalized canvas coordinates
// with -0.5 < x, y < 0.5
if (position) {
if (!this.isPlaying) {
this.play();
}
var mul = 2;
var x = position.x/this.size.width;
var y = -position.y/this.size.height;
this.panner.setPosition(x * mul, y * mul, -0.5);
} else {
this.stop();
}
};
Il codice sorgente completo della demo lavoro nel primo link sopra può essere trovato here.
offtopic: ho considerato riscrivere l'articolo citato a mano come una risposta personalizzata qui, ma che sembrava relativamente inutile in quanto l'articolo è già più che sufficiente chiara e fare doppio lavoro sembra inutile
Compatibilità, solo una combinazione di flash e il codice menzionato in precedenza offrono una vera soluzione di posizionamento/panning per browser cross-browser (dato che il flash non è disponibile su alcuni dispositivi mobili). Idealmente, consiglierei contro l'uso dell'API audio se questo può essere aggirato in quanto non è improbabile che le cose cambino nelle specifiche, quindi potrebbe infrangere il codice (+ non è improbabile che ciò non funzioni in alcun modo sui dispositivi mobili). L'unico scenario in cui l'uso delle API audio web più avanzate ha senso è se ci si aspetta di lavorare almeno da 6 a 18 mesi sul proprio gioco (poiché è probabile che impiegheranno le implementazioni per stabilizzare persino in un punto utilizzabile) .
fonte
2012-06-29 23:50:24
Un gioco '
Leggi questo: [Web Audio API] (http://www.w3.org/TR/webaudio/) –
@ ŠimeVidas, infatti. – corazza