AudioJS:每页只播放html5音频

时间:2017-02-10 06:10:33

标签: javascript jquery html5 audio

我目前正在使用非常容易集成的简单AudioJs脚本,但是如果我在同一页面中有多个音频文件,我希望用户能够点击任意播放并且无需停止先前的文件...我基本上需要一个切换,说“停止所有”然后播放这个

关于如何实现这一点的任何帮助?

我试过

    $.each($('audio'), function() {
        this.pause();
    });

但这并没有反转AudioJs创建的每个实例的按钮和“播放”状态

1 个答案:

答案 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
    }
}

演示:http://jsfiddle.net/rqsxxjmd/