按住键时忽略延迟?

查看了其他post,没有帮助……

我正在使用asdw在有限的空间内移动物体。 我试图弄清楚如何在按下按键时让对象移动,而不会在开始时出现瞬间延迟。

谢谢…

$(document).ready(function(){ var longitude = 0; var latitude = 0; $('body#sense').keypress(function(){ if(event.which == 65 || event.which == 97){ // Left if(longitude != 0){ longitude = longitude + 10; $('img#map').css('margin-left', longitude); } } else (event.which == 68 || event.which == 100){ // Right if(longitude > -200){ longitude = longitude - 10; $('img#map').css('margin-left', longitude); } } }); }); 

网页

   

Use your 'asdw' keys to move the map around

保持图像具有设定的宽度和高度,两者都小于图像。 设置为overflow:hidden,因此javascript会在div中移动图像,以便可以看到不同的部分。

CSS

 div#box { margin:0px auto; width:225px; height:225px; overflow:hidden; } div#box img { } 

使用keyDown事件,然后启动自己的计时器间隔来控制自己的重复间隔(忽略系统重复间隔),然后取消keyUp上的计时器。 忽略其他关键事件。 您可以在setInterval调用中选择自己的重复时间。

 var timer = null; function increaseLongitude() { // your code here } function decreaseLongitude() { // your code here } $("#sense").keyDown(function(e) { if (!timer) { if (e.which == 65 || e.which == 97) { timer = setInterval(increaseLongitude, 100); increaseLongitude(); } else if (e.which == 68 || e.which == 100) { timer = setInterval(decreaseLongitude, 100); decreaseLongitude(); } } }); $("#sense").keyUp(function(e) { if (timer) { clearInterval(timer); timer = null; } }); 

请尝试使用keydown事件

查看此版本的代码。 它可以通过’keydown’事件来完成。 我相信这是应该做的理想方式。

http://jsfiddle.net/valllabh/yFxDN/10/