【问题标题】:Web audio playing only once [duplicate]网络音频只播放一次[重复]
【发布时间】:2019-04-19 21:44:29
【问题描述】:

我是一名学生,也是 Web API 的初学者。我编写这段代码是为了练习使用 JavaScript 生成简单的音调:

<html>
	<body>
		Frequency = <input type="number" id="freq"/><br>
		Waveform = <input type="text" id="wf"/><br>
		<button onclick="start()">Play</button>
		<button onclick="stop()">Stop</button>
	</body>
	<script>
		const context=new AudioContext();
		const oscillator=context.createOscillator();
		oscillator.type='sine';
		oscillator.frequency.value=400;
		const gain=context.createGain();
		oscillator.connect(gain);
		gain.connect(context.destination);
		function start()
		{
			oscillator.start();
		}
		function stop()
		{
			oscillator.stop();
		}
	</script>
</html>

问题:

有两个按钮,播放停止。 当我点击 Play 按钮时,声音正在播放。然后我点击停止按钮来停止声音。然后,当我再次点击播放按钮时,没有听到任何声音!

我做错了什么?

【问题讨论】:

  • 查看第二次调用.start 时收到的控制台错误,我认为这是相关的:stackoverflow.com/questions/32161832/…
  • 谢谢,这解决了我的问题。那么,我可以删除这个问题吗?

标签: javascript html audio


【解决方案1】:

这是您的解决方案:

 
$(document).ready(function() {
    var context = new AudioContext();
    var oscillator = context.createOscillator();   
    
    oscillator.start(); 
    $("#start").click(function() {
        if($('#freq').val()!=""){
          oscillator.frequency.value = $("#freq").val();
          console.log($("#freq").val());
        }else{
          oscillator.frequency.value = 400;
        }
        oscillator.connect(context.destination);
    });
    $("#stop").click(function() {
        oscillator.disconnect(context.destination);
    });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<html>
	<body>
		Frequency = <input type="number" id="freq"/><br>
		Waveform = <input type="text" id="wf"/><br>
		<button id="start">Play</button>
		<button id="stop">Stop</button>
	</body>
	
</html>

【讨论】:

    猜你喜欢
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多