2011-12-30 91 views
0

我目前正在通过教程如何使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

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

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

  • 结束
  • 暂停
  • 发挥

如果你听到这些,并保持一个全球性的标志,告诉你,如果媒体播放过程中,可以防止你的其他按钮/链接播放声音,首先检查该标志。

编辑的注释

几乎所有你需要的代码是JavaScript的,而不是PHP。看看这个示例小提琴。

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

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

但是我已经添加了所有的媒体活动,以向他们展示他们所有的发射 - 这将有助于了解他们何时和多频繁地被解雇。他们是listed at MDC here

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

+0

谢谢你的答案。你认为你可以扩展一点,我还是很新的PHP。 – Nick 2011-12-31 03:31:41

+0

我发现这段代码'var audio = null; audio = document.createElement(“audio”); audio.src =“piano/3C.mp3”; audio.addEventListener('ended',function(){ audio.play(); },false); function play(){ audio.play(); } function restart(){ audio.currentTime = 0; audio.play(); }' – Nick 2011-12-31 04:25:37