javascript - HTML5/Javascript 网络音频 API

标签 javascript html webkit

我正在开始使用网络音频 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/

相关文章:

css - 解决 Safari 表 colspan/writing-mode 宽度错误

javascript - iOS Safari 上的 webkitAudioContext createMediaElementSource 无法正常工作

Javascript 子字符串未按预期工作

javascript - 为什么当我调用它时,函数内部的全局变量未定义?

html - Bootstrap 列的中心内容

javascript - 如何在html中创建字体选择栏

html - 容器内的内联 DIV 总是将最后一个插入 WebKit 中的第二行

javascript - 单元测试依赖于对同一函数的多次调用结果的模块的最佳实践

javascript - 如何使用键盘向左/右/上/下移动球?

c# - 为表的每一行中的特定列应用 jquery 脚本