我正在开始使用网络音频 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>
解决方案
我设法自己找到了解决方案,当调用方法 stop 时,它期望上下文当前时间加上浮点秒数作为参数。
osc.stop(ac.currentTime + 2.0);
最佳答案
您的 JavaScript 代码工作正常。我测试过,多次有效。
你用什么插件来播放声音?
(抱歉,由于我的声誉较低,无法发表评论)
关于javascript - HTML5/Javascript 网络音频 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33642033/