我有以下基于画布的游戏的 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 函数,它根本不会播放声音。这意味着一次只允许播放一次声音文件 - 在发生多次爆炸的情况下,它根本不起作用。
有什么方法可以正确播放与自身重叠的音频文件多次?