如何在JavaScript中循环播放声音?

8
我尝试了以下JavaScript代码以播放声音,但未成功按指定次数播放。声音只会播放一次。有什么问题吗?
for(var i = 0; i < errors; i++){
    PlaySound3();
}

功能:

function PlaySound3() {
    var audioElement = document.getElementById('beep');
    audioElement.setAttribute("preload", "auto");
    audioElement.autobuffer = true;    
    audioElement.load();
    audioElement.play();
};

HTML 代码:

<audio id="beep">
    <source src="assets/sound/beep.wav" type="audio/wav" />
</audio>

我认为你本质上并没有等待声音播放完毕。for循环运行非常快,你只能听到最后一个。尝试在“PlaySound”之后稍微等一下,或者使用事件来检测何时播放完成。 - Matthew Wilcoxson
你有什么建议?如何在声音之间制造延迟? - user3427977
1个回答

7
如果您想要无限播放音频,请在audio标签中使用属性loop
<audio id="beep" loop>
   <source src="assets/sound/beep.wav" type="audio/wav" />
</audio>

编辑

如果您想在循环3次后停止,请添加事件侦听器:

HTML:

<audio id="beep">
   <source src="assets/sound/beep.wav" type="audio/wav" />
</audio>

JS:

var count = 1
document.getElementById('beep').addEventListener('ended', function(){
   this.currentTime = 0;
   if(count <= 3){
      this.play();
   }
   count++;
}, false);

我想循环播放声音,但只要特定的次数,而不是永远。 - user3427977
当你想要停止循环时,使用JavaScript将属性“loop”更改为false。 - R3tep
我想在声音播放3次后停止循环,我该如何知道声音已经播放了3次,以便设置 track.loop = false - user3427977

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接