处理keydown和keyup [jquery]

时间:2015-05-21 09:48:29

标签: jquery audio keydown keyup

有这样一个处理程序:

<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 谢谢!

1 个答案:

答案 0 :(得分:0)

我建议你设置新的变量。类似soundIsPlaying = false之类的内容,并在start()方法的开头设置为true,然后在false方法的末尾返回stop。如果声音尚未打开,您只想开始播放声音。

原因是用户可能会更快地按下“开始”按钮,然后完成声音,您必须以某种方式检查是否必须立即启用音乐。

P.S。请务必在程序的较高范围内的某处设置此变量,这样它将保持启动/停止方法调用之间的状态。