播放声音文件数组

问题描述:

我试图将一个变量传递给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(); 
    } 
} 

你能帮助我吗?

您可以继续拨打一个循环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