停止网络音频振荡器没有点击

时间:2016-06-08 21:43:34

标签: javascript web-audio-api

执行此代码时,我收到此错误:“Uncaught TypeError:无法在'AudioParam'上执行'linearRampToValueAtTime':提供的double值是非限定的。”

var ac = new window.AudioContext() || new window.webkit.AudioContext();
var osc;
var gain = ac.createGain();

function playosc() {
    osc = ac.createOscillator();
    osc.frequency.value = 440;
    osc.connect(gain);
    gain.connect(ac.destination);
    gain.gain.setValueAtTime(0, ac.currentTime);
    gain.gain.linearRampToValueAtTime(0.3, ac.currentTime + 0.01);
    osc.start();
}

function stoposc() {
    gain.gain.linearRampToValueAtTime(0, ac.endTime - 0.01);
    osc.stop(ac.endTime);
}

&安培;当代替ac.endTime只是endTime - “endTime未定义”错误发生。也许有人可以解释为什么会这样?感谢

1 个答案:

答案 0 :(得分:0)

没有AudioContext endTime属性。执行AudioContext.endTime会返回undefined,因此您undefined-.01会返回NaN,这不是有限的。您将像创建振荡器时一样使用currentTime

function stoposc() {
    gain.gain.linearRampToValueAtTime(0, ac.currentTime + .01);
    osc.stop(ac.currentTime + .02);
}