我正在使用Web Audio API并使用此代码:
function playTones(startFreq, numNotes) {
if (numNotes === 0) return;
var osc = AC.createOscillator();
osc.frequency.value = startFreq;
osc.onended = function() {
playTones(startFreq + 20, numNotes-1);
};
console.log(osc.onended);
osc.connect(AC.destination);
osc.start();
osc.stop(AC.currentTime + 1);
}
它只是应该播放一系列音符,每个音符比前一个高20Hz。但是,当我删除console.log
时,它无法正常工作;它只播放第一个音符,然后停止,onended
回调从未被调用。为什么会这样?感谢您的帮助。
答案 0 :(得分:0)
嘿,你可以试试这个:
var AC = new AudioContext();
function playTones(startFreq, numNotes) {
if (numNotes === 0) return;
var osc = AC.createOscillator();
osc.frequency.value = startFreq;
// console.log(osc.onended);
osc.connect(AC.destination);
osc.start();
osc.stop(AC.currentTime + 1);
setTimeout(function(){playTones(startFreq+20,10)},1000);
}
playTones(200, 10);