按顺序播放没有HTML5音频的MP3文件
问题描述:
我试图使用没有HTML5音频标签的Javascript一个接一个地播放三个MP3文件。 [我在Articulate Storyline里面工作,这是一个电子学习的创作工具。它支持Javascript文件内而不是HTML]按顺序播放没有HTML5音频的MP3文件
到目前为止,我已经得到了最好是玩都在同一时间如下:
function myFunction() {
var audio1 = new Audio('http://www.mysite.co.uk/h/welcome.mp3');
var audio2 = new Audio('http://www.mysite.co.uk/h/name.mp3');
var audio3 = new Audio('http://www.mysite.co.uk/h/cont.mp3');
audio1.play();
audio2.play();
audio3.play();
}
,我认为是一个“等待”的功能,但我只知道如何正确使用JQuery来做到这一点,如果我正确回忆,Articulate Storyline即使托管在别处也不支持JQuery。
任何帮助,这是极大的赞赏
答
您可以使用事件处理程序,监听音频播放到结束,然后播放下一个等
function play(audio) {
audio.play();
return new Promise(function(resolve, reject) {
audio.addEventListener('ended', resolve);
});
}
function myFunction() {
var audio1 = new Audio('http://www.mysite.co.uk/h/welcome.mp3');
var audio2 = new Audio('http://www.mysite.co.uk/h/name.mp3');
var audio3 = new Audio('http://www.mysite.co.uk/h/cont.mp3');
play(audio1).then(function() {
return play(audio2);
}).then(function() {
return play(audio3);
});
}
答
我会建议你使用音频激怒了事件。只听一个玩家停下来玩下一个。
例子: 一种方法是你的球员添加到一个数组以更好地控制
var players = [audio1,audio2,audio3];
var counter = 0;
audio1.onended = playNext;
function playNext(){
if(counter <= players.length){
counter++
players[counter].play();
players[counter].onnded = playNext;
}
}
oneneded:http://www.w3schools.com/tags/av_event_ended.asp
希望这有助于
这是完美的!谢谢!使用我已经预先编写的代码来获取用户名变量也能很好地工作。 再次感谢您 – Aaron