我目前正在使用非常容易集成的简单AudioJs脚本,但是如果我在同一页面中有多个音频文件,我希望用户能够点击任意播放并且无需停止先前的文件...我基本上需要一个切换,说“停止所有”然后播放这个
关于如何实现这一点的任何帮助?
我试过
$.each($('audio'), function() {
this.pause();
});
但这并没有反转AudioJs创建的每个实例的按钮和“播放”状态
答案 0 :(得分:0)
这种功能的一般技巧是在所有玩家身上绑定onplay
事件;当你玩一个它会触发现在你暂停所有玩家,除了onplay
被触发的玩家,但问题是audiojs不提供音频事件(它只提供播放方法,暂停等)在其包装但是你可以做一些事情:每个玩家对象都会引用其相应的HTML5 <audio>
元素(实际上正在播放mp3)你可以使用它并使用element
属性直接绑定到该元素
1.绑定onplay
所有玩家
allAud = a.createAll();
for(var i=0; i<allAud.length;i++)
{
allAud[i].element.onplay = function pauseOthers();
}
2.当onplay触发循环遍历所有玩家的<audio>
并暂停除触发事件的所有人之外的所有事件(使用audiojs wrapper pause()
方法
function pauseOthers() {
for(var j=0; j<allAud.length;j++)
{
if(allAud[j].element != this) //pause all except the one being played
allAud[j].pause(); // can also use `this.pause()` , but better let audiojs do that incase it's handling some play/pause animation
}
}