2016-09-19 260 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

希望這有助於