gpt4 book ai didi

javascript - (Web Audio API) 振荡器节点错误 : cannot call start more than once

转载 作者:可可西里 更新时间:2023-11-01 01:16:59 24 4
gpt4 key购买 nike

当我启动振荡器时,将其停止,然后再次启动;我收到以下错误:

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/

最终解决方案:http://jsfiddle.net/xbqbzgt2/3/

最佳答案

更好的方法是启动 oscillatorNode 一次,并在需要时连接/断开 oscillatorNode 与图形的连接,即:

var ctx = new AudioContext();
var osc = ctx.createOscillator();
osc.frequency.value = 8000;
osc.start();
$(document).ready(function() {
$("#start").click(function() {
osc.connect(ctx.destination);
});
$("#stop").click(function() {
osc.disconnect(ctx.destination);
});
});

这如何在 muting the thermin 中完成静音(mozilla 网络音频 api 文档)

关于javascript - (Web Audio API) 振荡器节点错误 : cannot call start more than once,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32161832/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com