キャンバスベースのゲーム用に次のJSコードがあります。
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);
}
これは機能しますが、呼び出されるたびにサウンドファイルをダウンロードするようにサーバー要求を送信します。または、事前にAudioオブジェクトを宣言した場合:
var snd = new Audio();
snd.src = EXPLOSION;
snd.volume = 0.5;
function createExplosion() {
snd.play();
}
これは機能しますが、サウンドの再生が終了する前にcreateExplosion関数が呼び出された場合、サウンドはまったく再生されません。これは、サウンドファイルの1回の再生のみが一度に許可されることを意味します。複数の爆発が発生しているシナリオでは、まったく機能しません。
オーディオファイルをそれ自体と重複して複数回適切に再生する方法はありますか?