删除空闲时间'一直按下一把钥匙

时间:2014-07-22 15:07:08

标签: javascript keydown event-listener keyup

当你写东西并且你一直按下一个键(让我们说'一个')它会写下来,然后你的电脑会等待大约200ms ('空闲时间')只有这样,它才会大量地写出' a'只要你拿着钥匙。 出于各种原因(主要是游戏控制),我想删除那个“空闲时间”,我该如何去做呢?

1 个答案:

答案 0 :(得分:1)

你基本上只想在按下按键时启动一个定时循环,做任何事情,然后当你按下按键时结束定时循环:这就是我要做的事情:

获取一个知道密钥是否已关闭的变量然后将keydown事件监听器添加到您按下该键的任何内容上,触发一个定时循环函数,该函数在变量为false时停止,并添加一个keyup事件监听器这使得变量为false,如下所示:

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});

当然你必须为每个键执行此操作,但是你可以使用自动生成的数组,因为你主要将它用于游戏控件,我认为你不需要很多这些东西,所以这应该很好用为你