当我启动振荡器时,停止它,然后再启动它;我收到以下错误:
Uncaught InvalidStateError: Failed to execute 'start' on 'OscillatorNode': cannot call start more than once.
显然我可以gain
用来“停止”音频,但这让我觉得这是一种糟糕的做法。在能够再次启动振荡器的同时停止振荡器的更有效方法是什么?
代码(jsfiddle)
var ctx = new AudioContext();
var osc = ctx.createOscillator();
osc.frequency.value = 8000;
osc.connect(ctx.destination);
function startOsc(bool) {
if(bool === undefined) bool = true;
if(bool === true) {
osc.start(ctx.currentTime);
} else {
osc.stop(ctx.currentTime);
}
}
$(document).ready(function() {
$("#start").click(function() {
startOsc();
});
$("#stop").click(function() {
startOsc(false);
});
});
当前解决方案(问题时):http: //jsfiddle.net/xbqbzgt2/2/