【发布时间】:2018-05-04 20:46:51
【问题描述】:
使用 Opera 44.0,我正在摆弄音频 API 并尝试了一个简单的示例:
var ac = new AudioContext();
var osc = ac.createOscillator();
osc.connect(ac.destination);
osc.start();
osc.stop(2);
按预期工作,声音播放 2 秒然后停止。
然后我试着往上一点,在点击按钮时播放声音:
function play(){
var osc = ac.createOscillator();
osc.connect(ac.destination);
osc.start();
osc.stop(2);
}
var ac = new AudioContext();
var playBtn = document.querySelector("#play");
playBtn.addEventListener("click", play);
它不起作用。当我单击按钮时调用该函数(我在函数内部使用console.log() 检查),但没有播放声音。我尝试刷新页面,重新启动浏览器.. 没有。
经过一番研究,我发现在调用stop() 时振荡器被丢弃,所以我每次都必须创建一个新的振荡器。我发现的几乎所有示例都围绕着这个概念,这就是我在函数内部创建它的原因。但是没有任何错误,我无法弄清楚为什么它不起作用。
那么,问题出在哪里?
【问题讨论】: