制作音频播放器。浏览器不兼容尝试使用embed标签播放阵列中的音频。继续比赛,下一场比赛不打。只打一场比赛。我想按顺序播放数组的内容。
var files = ['notibell_1.wav', 'notibell_2.wav', 'notibell_3.wav'];
var daudio = document.createElement('embed');
daudio.setAttribute('id', 'daudio');
daudio.height = "50";
daudio.width = "400";
daudio.controls = true;
daudio.autoplay = true;
daudio.type = "audio/wav";
for (var i = 0; i < files.length; i++) {
daudio.src = files[i];
}
bottom.appendChild(daudio);
答案 0 :(得分:1)
这不会起作用,因为您在能够播放声音之前更新ended
3次。我建议您使用HTML5本机音频元素,并至少在mp3和ogg中准备好您的声音。
如果要按顺序播放数组的内容,可以使用var files = ['notibell_1.wav', 'notibell_2.wav', 'notibell_3.wav'];
var i = 0;
audio = new Audio(files[0]);
//Let's add the ended event listener,
//change the source and play it.
audio.addEventListener('ended',function(){
if(++i < files.lenght){
audio.src = files[i];
audio.pause();
audio.load();
audio.play();
}
else{
audio.pause();
}
});
事件侦听器重现下一个声音:
{{1}}
我还没有经过测试,但你可以得到这个想法
答案 1 :(得分:0)
您正在创建一个音频元素,分配所有属性,然后在循环中设置源,覆盖它2次。你的循环应该包含整个元素的创建和附加:
var files = ['notibell_1.wav', 'notibell_2.wav', 'notibell_3.wav'];
for (var i = 0; i < files.length; i++) {
var daudio = document.createElement('embed');
daudio.setAttribute('id', 'daudio');
daudio.height = "50";
daudio.width = "400";
daudio.controls = true;
daudio.autoplay = true;
daudio.type = "audio/wav";
daudio.src = files[i];
bottom.appendChild(daudio);
}
现在所有3个音频文件同时播放。避免这种情况的一种简单方法是制作播放列表文件。 .m3u
是一种简单的格式。制作另一个名为playlist.m3u
的文件:
notibell_1.wav
notibell_2.wav
notibell_3.wav
然后只创建一个音频元素,将播放列表作为源:
var daudio = document.createElement('embed');
daudio.setAttribute('id', 'daudio');
daudio.height = "50";
daudio.width = "400";
daudio.controls = true;
daudio.autoplay = true;
daudio.type = "audio/wav";
daudio.src = 'playlist.m3u';
bottom.appendChild(daudio);