执行此代码时,我收到此错误:“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未定义”错误发生。也许有人可以解释为什么会这样?感谢
答案 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);
}