有这样一个处理程序:
<script>
function start() {
var audio = new Audio('URL');
audio.play();
}
function stop() {
var aud = document.getElementById(id);
aud.pause();
aud.currentTime = 0;
}
$(document).keydown(function(e) {
if (e.keyCode == 81) {
return start();
}
});
$(document).keyup(function(event) {
if (event.keyCode == 81) {
return stop();
}
});
</script>
脚本有效,但不知何故错了。
也就是说,它工作一秒钟,但随后开始重新运行递归函数start(),这就是声音相互强加的原因。
我还需要在按下时使脚本工作(再现声音),并在释放时停止(典型合成器的原理)。
请帮助我处理keydown和keyup
谢谢!
答案 0 :(得分:0)
我建议你设置新的变量。类似soundIsPlaying = false
之类的内容,并在start()
方法的开头设置为true,然后在false
方法的末尾返回stop
。如果声音尚未打开,您只想开始播放声音。
原因是用户可能会更快地按下“开始”按钮,然后完成声音,您必须以某种方式检查是否必须立即启用音乐。
P.S。请务必在程序的较高范围内的某处设置此变量,这样它将保持启动/停止方法调用之间的状态。