停止声音和分离数组

时间:2011-12-30 02:32:37

标签: javascript html5 audio

我目前正在编写有关如何在HTML5中制作声卡的教程here

我遇到问题的当前代码是:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" charset="utf-8">
   $(function() {
        $("audio").removeAttr("controls").each(function(i, audioElement) {
            var audio = $(this);
            var that = this; //closure to keep reference to current audio tag
            $("#doc").append($('<button>'+audio.attr("title")+'</button>').click(function() {
                    if(that.play()==true){
                        play.stop();
                    }else{
                that.play();
                    }
            }));
        });
    });
</script>

我试图让它只能一次播放一个声音。我也尝试通过调用that.stop()来制作一个普通的停止按钮,但它不起作用。我也试图找出如何制作单独的数组,以便我可以组织声音。我尝试更改音频标签,如教程中讨论如何创建搜索该数组的数组。但我必须改变错误的代码行,因为新的数组永远不会起作用。

1 个答案:

答案 0 :(得分:1)

要只允许一次播放一首声音,我会听DOM media events

有几个事件会对你有所帮助。如:

  • 结束
  • 暂停
  • 播放

如果你听这些,并保持一个全局标志告诉你媒体是否正在播放,你可以通过先检查这个标志来阻止你的其他按钮/链接播放声音。

赞成评论

您需要的几乎所有代码都是JavaScript,而不是PHP。看看这个样本小提琴。

http://jsfiddle.net/B82Nq/11/

它将通用媒体事件侦听器注册到3个<audio>标记,并分隔暂停,结束和播放事件处理程序以控制回放。当你收到一个停止/启动事件时,会切换一个全局布尔变量来告诉你是否应该允许另一个片段播放(我假设你只是禁用播放它们的按钮,或类似的东西)。

但是我已经添加了所有媒体事件,无论如何都会向你展示它们 - 它将有助于了解它们被解雇的时间和频率。它们是listed at MDC here

(没有为使用AC / DC剪辑道歉:)