2016-09-19 258 views
0

我试图使用没有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。

任何帮助,这是极大的赞赏

回答

1

您可以使用事件处理程序,监听音频播放到结束,然后播放下一个等

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); 
    }); 
} 
+0

这是完美的!谢谢!使用我已经预先编写的代码来获取用户名变量也能很好地工作。 再次感谢您 – Aaron

1

我会建议你使用音频激怒了事件。只听一个玩家停下来玩下一个。

例子: 一种方法是你的球员添加到一个数组以更好地控制

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

希望这有助于