持有钥匙重复了它的目的

Holding a key duplicates it's purpose

本文关键字:钥匙      更新时间:2023-09-26

我有一个小问题,我在浏览器中使用JavaScript制作了一架钢琴,它与键盘键一起工作。我只需要javascript, jquery现在不是我的选择。

问题是当我按住一个键时,噪音声音不断重复,我希望它只播放一次我按下的每个键,即使我按住它几秒钟。

我该怎么做呢?

<audio id="do"> 
<source src="do.mp3" type="audio/mp3"></audio>

<script>
    var do1 = document.getElementById('do');
    function load1()
    {
        do1.load();
    }
    document.addEventListener('keydown',function(event) {
        if(event.keyCode == 90) {{do1.load()
            do1.play();
        }}
    });
</script>

在第一次按下键(按下键事件)时添加一个标志,该标志在按上键事件时重置,并防止随后的按下键事件多次触发而不同时释放键。

var prevent = false;
document.addEventListener('keydown',function(event) {
    if(event.keyCode == 90 && !prevent) {
        prevent = true;
        do1.load()
        do1.play();
    }
});
document.addEventListener('keyup',function(event) {
    prevent = false;
});

然而,一个问题可能是,当焦点在释放键之前被设置在其他地方时,keyup事件可能不会被接收到。