停止声音和分离阵列

Stop sound and separate arrays

本文关键字:分离 阵列 声音      更新时间:2023-09-26

我目前正在学习如何在HTML5中制作声音板的教程。

我现在遇到的问题是:

<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()来制作一个简单的停止按钮,但它不起作用。我也在试图弄清楚如何制作单独的阵列,这样我就可以组织声音。我尝试改变音频标签,在教程中讨论如何创建数组搜索。但是我一定是更改了错误的代码行,因为新数组永远不会工作。

为了一次只允许一个声音播放,我会监听DOM媒体事件。

有几个事件可以帮助你。如:

  • 暂停

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

已编辑:

几乎所有你需要的代码都是JavaScript,而不是PHP。请看一下这个小提琴的样本。 http://jsfiddle.net/B82Nq/11/

它为3个<audio>标签注册了一个通用的媒体事件监听器,并将暂停、结束和播放事件处理程序分开来控制播放。当你发送一个停止/开始事件时,一个全局布尔变量被切换,它告诉你是否应该允许另一个剪辑播放(我假设你将简单地禁用播放它们的按钮,或类似的东西)。

但是我已经添加了所有的媒体事件来显示它们都在开火——这将有助于理解它们何时和多久被开火。它们列在MDC:

(不为使用AC/DC夹而道歉:)