2011-12-30 42 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