2016-06-11 144 views
0

調用函數generate時,應該播放聲音。如果按鈕被觸發,聲音應該停止。什麼是最好的方法來做到這一點?JavaScript停止按鈕單擊的音頻

<script> 

    var audio = new Audio('assets/spin.mp3'); 

     function generate() 
      { 

       /* some code goes here*/ 
       audio.play(); 
      } 

    </script> 

    <button onClick="game.rotationAngle=0; game.draw();generate();audio.stop();">start</button> 

這是一種重置,我需要執行時,按鈕被觸發。這就是爲什麼需要在聲音再次運行之前停止聲音的原因。

我得到在調試這個錯誤: error

+0

你是說,你確實想通過點擊相同的按鈕來觸發啓動/停止?創建一個變量(標誌)並在點擊時更改它的值。 – nicael

+0

當我按下按鈕時,在我的debuger中出現此錯誤:http://i.stack.imgur.com/95sEn.png –

回答

1
  1. 你應該點擊第n(N + 1)個時間區分。要做到這一點,只需檢查音頻是否暫停。
  2. 使用audio<script>標記之外無效,因爲您在腳本標記中定義它。
  3. 如果要開始追蹤,還應該將當前時間設置爲零。

下面是結果代碼。

<script> 
    var audio = new Audio('assets/spin.mp3'); 
    function generate() { 
     /* some code goes here*/ 
     if(audio.paused) {audio.currentTime=0;audio.play()} 
        else audio.pause(); 
    } 
</script> 
<button onClick="game.rotationAngle=0; game.draw();generate();">start</button> 
+0

我使用的腳本適用於某種'命運之輪'。爲此,我需要在每次按下按鈕時從頭開始播放聲音。你知道我的意思? –

+0

@pele你的意思是重新開始?檢查編輯。 – nicael

+0

這工作正常,但它在調試器中顯示我這個錯誤,當多次按下按鈕。 http://puu.sh/pp6fV/972009d73e.png –

2

您可能需要使用audio.pause(),而不是因爲沒有stop方法。如果您檢查Audio.prototype.stop它是未定義的。

0

有沒有這樣的功能audio.stop()。 您可以改用以下內容:

function generate() { 
    if(!audio.paused) { /* Check if it's not paused */ 
     audio.pause(); /* To pause the audio */ 
     audio.currentTime = 0; /* To reset the time back to 0 */ 
    } 
    else { 
     audio.play(); /* To make it play again */ 
    } 
}; 
0

使用audio.pause(),而不是audio.stop()