我是从网络音频API入门的,出于某种原因,此代码只播放了一次振荡器,我错过了什么?

    <select class="osc1">
        <option value = "sawtooth">Sawtooth</option>
        <option value = "square">Square</option>
        <option value = "triangle">Triangle</option>
        <option value = "sine">Sine</option>
    </select>
    <button id="play-btn">Play</button>

    <script>
        var ac = new (window.AudioContext || window.webkitAudioContext)();

        function createOsc(ac, elclass)
        {
            var osc = ac.createOscillator();
            osc.frequency.value = 110;
            osc.type = document.getElementsByClassName(elclass)[0].value;
            osc.connect(ac.destination);

            osc.start();
            osc.stop(2);
        }

        document.getElementById("play-btn").addEventListener("click", function(e){
            createOsc(ac, 'osc1');
        });
    </script>




我设法自己找到解决方案,当调用方法stop时,它希望将上下文当前时间加上浮点秒数作为参数。

 osc.stop(ac.currentTime + 2.0);

最佳答案

您的JavaScript代码运行正常。我测试过,它可以多次工作。

您正在使用哪个插件播放声音?

(对不起,由于我的声誉低下而无法发表评论)

关于javascript - HTML5/Javascript网络音频API,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33642033/

10-17 02:58