2015-11-11 177 views
1

我開始使用網絡音頻API,並且由於某些原因,此代碼只能播放一次振盪器,我錯過了什麼?HTML5/Javascript網絡音頻API

<select class="osc1"> 
     <option value = "sawtooth">Sawtooth</option> 
     <option value = "square">Square</option> 
     <option value = "triangle">Triangle</option> 
     <option value = "sine">Sine</option> 
    </select> 
    <button id="play-btn">Play</button> 

    <script> 
     var ac = new (window.AudioContext || window.webkitAudioContext)(); 

     function createOsc(ac, elclass) 
     { 
      var osc = ac.createOscillator(); 
      osc.frequency.value = 110; 
      osc.type = document.getElementsByClassName(elclass)[0].value; 
      osc.connect(ac.destination); 

      osc.start(); 
      osc.stop(2); 
     } 

     document.getElementById("play-btn").addEventListener("click", function(e){ 
      createOsc(ac, 'osc1'); 
     }); 
    </script> 

SOLUTION

我是自己想辦法了,調用該方法時停止,預計作爲參數在浮點上下文當前時間加上的秒數。

osc.stop(ac.currentTime + 2.0); 

回答

0

您的JavaScript代碼工作正常。我測試過,它可以多次使用。

你用什麼插件播放聲音?

(對不起,不能因爲我的低信譽的評論)

+0

這是奇怪的,我在Chrome和Firefox已經測試過它只能播放創建的第一個振盪器。我沒有使用任何插件。這只是vanilla Javascript和MDN中記錄的Web Audio API,它不需要我知道的任何插件或庫。感謝回覆 –

+0

你能告訴你在哪個瀏覽器中測試了它嗎?和哪個版本?謝謝 –