2013-03-28 39 views
-2

我試圖將一個變量傳遞給JavaScript函數並使用HTML5 <audio>元素播放它。播放聲音文件數組

如果我傳遞一個字符串參數到函數中,這只是一個文件,我玩它。但是如果我傳遞一個數組,我想按照歌曲播放整個數組。

這裏是我的基本思想是:

function playSound(sound) { 
    var audio = document.getElementById('sound'); 
    if(sound instanceof Array) { 
     // Play the whole array 
    } 
    else { 
     // Play only one file 
     audio.src = sound; 
     audio.play(); 
    } 
} 

你能幫助我嗎?

回答

1

您可以繼續撥打一個循環playSound和呼叫綁定到onended

if (sound instanceof Array) { 
    audio.src = sound.shift(); 
    audio.play; 
    if (sound.length) { 
     audio.addEventListener('ended', function() { 
      playSound(sound); 
     }); 
    } 
} 
+0

這完美的作品。但是如果其中一個聲音文件丟失並且無法播放,則在下一次傳入單個文件(我的示例中的其他文件)後播放。是否有可能解決這個問題? – Gaui 2013-03-28 01:34:42

+0

如果缺少它,它會怎麼玩? – 2013-03-28 01:35:27

+0

呵呵,對不起。讓我更好地解釋一下。 '動作1:'傳遞文件數組['missing.mp3','second.mp3'],它不會播放任何內容,因爲'結束'事件永遠不會到達。然後在'Action 2:'只傳遞一個文件(single.mp3),然後它播放single.mp3 AND second.mp3 – Gaui 2013-03-28 01:40:02