移除'空闲时间'同时不停地按一个键

remove 'idle time' while keeping on pressing a key

本文关键字:一个 时间 移除      更新时间:2023-09-26

当你写的东西,你一直按一个键(让我们说'a'),它会写下'a',然后你的电脑将等待大约200ms('空闲时间'),只有这样,它会大量地写'a',只要你持有的键。出于各种原因(主要是游戏控制),我想要删除"空闲时间",我该怎么做?

你只需要在按键被按下时开始计时循环,然后在按键离开时结束计时循环:我是这样做的:

获取一个知道键是否为下的变量,然后为你按下的键添加一个keydown事件监听器,在变量为假时触发定时循环函数,并添加一个keyup事件监听器,使变量为假,如下所示:

document.addEventListener('keydown', function(e){if(!pressed)loop(e)});
function loop(e){
    if(pressed) window.setTimeout(function(){loop(e), 20 /*just insert the ms between each loop*/};
    //do stuff with the key, using the 'e' parameter;
}
document.addEventListener('keyup', function(e){pressed=false});

当然,您必须为每个键都这样做,但您可以使用自动生成的数组,并且由于您主要将其用于游戏控制,我认为您不需要很多这些东西,所以这应该很适合您