Ich habe den folgenden JS-Code für ein Canvas-basiertes Spiel.Wiedergabe von Audio durch JS mit Überlappung
var EXPLOSION = "sounds/explosion.wav";
function playSound(str, vol) {
var snd = new Audio();
snd.src = str;
snd.volume = vol;
snd.play();
}
function createExplosion() {
playSound(EXPLOSION, 0.5);
}
Dies funktioniert, jedoch sendet es eine Serveranforderung, die Sounddatei jedes Mal herunterzuladen, wenn es aufgerufen wird. Alternativ kann, wenn ich die Audio-Objekt deklarieren vorher:
var snd = new Audio();
snd.src = EXPLOSION;
snd.volume = 0.5;
function createExplosion() {
snd.play();
}
Dies funktioniert jedoch, wenn die createExplosion Funktion aufgerufen wird, bevor der Ton spielen fertig ist, ist es nicht den Ton spielen überhaupt. Dies bedeutet, dass nur ein einziges Durchspielen der Sounddatei gleichzeitig erlaubt ist - und in Szenarien, in denen mehrere Explosionen stattfinden, funktioniert es überhaupt nicht.
Gibt es eine Möglichkeit, eine Audiodatei mehrere Male überlappend mit sich selbst zu spielen?
endete mit mit der AudioFX Bibliothek zu gehen: http: // codeincomplete .com/posts/2011/9/17/revisiting_html5_audio/ –