我的基于web的javascript游戏对onkeyup事件不是很敏感.我如何使程序检测所有的击键,而不仅仅是其中的一些
My web-based javascript game is not very sensitive to onkeyup events. How can I make the program detect all keystrokes and not just some of them?
我正在为两个玩家制作一款基于web的赛马游戏,其中一匹马使用箭头键控制,另一匹使用asdw键控制。我使用html和javascript。我的问题是,该程序似乎只检测按键事件的一些时间(约65%的时间),所以游戏不是很响应击键。我的代码如下:
我的相关html代码是:
<body onkeyup="steer(event)" onload = "init()">
我的相关javascript是:
function init(){
...code that counts 3,2,1,go!...
setTimeout(function(){doMove();}, 3000);
}
function steer(event){
key = (event.keyCode);
if(key == 38) up();
if(key == 40) dn();
if(key == 37) lt();
if(key == 39) rt();
if(key == 87) up2();
if(key == 83) dn2();
if(key == 65) lt2();
if(key == 68) rt2();
}
}
function doMove(){
...code for moving the horses...
setTimeout(doMove, 5);
}
up()、dn()等。函数只是有代码来改变马的速度基于keyup事件。
程序只检测65%的击键(大约),即使只有一个玩家在玩(它与同时击键无关)。
使用这个jsFiddlekey跟踪代码,我似乎不能让它错过一个键捕获,这可能是另一个元素正在捕获和防止事件上的气泡,或者也许浏览器正在被运动淹没(我将settimeout更改为setinterval,这应该更容易对客户端)。
我还将其更改为使用开关,以及不需要使用shift键的键代码
var steer = function (event) {
var key = (event.keyCode || event.which);
switch (key) {
case 73:
up();
break;
case 75:
dn();
break;
case 74:
lt();
break;
case 76:
rt();
break;
case 87:
up2();
break;
case 83:
dn2();
break;
case 65:
lt2();
break;
case 68:
rt2();
break;
}
};
相关文章:
- 如何使用jquery在填充自动完成的值后使文本框只读
- JQuery使计数器每次更改时都会增加
- 如何使Javascript动态html表及其上的事件
- 如何检测是否有溢出
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- JavaScript打印功能使日历停止工作
- 如何在拖动对象时检测画布的中心线以使其居中
- 检测TAB键并使脚本执行成为条件
- 使JavaScript检测按特定顺序按下的按钮
- 如何使Facebook喜欢检测在我的网站上工作
- 当noVolume选项与jPlayer一起使用时进行检测
- 如何使谷歌地图V3方向工作与用户位置检测-GeoCoder
- 如何使一个地址可点击(可检测)的iphone html像电话号码
- 我的基于web的javascript游戏对onkeyup事件不是很敏感.我如何使程序检测所有的击键,而不仅仅是其中的一些
- 在Bootstrap Modal中检测滚动使滚动上的每个元素动画化
- 使碰撞检测更有效
- 如何使JavaScript indexOf()不检测子字符串
- 我如何使我的网站检测某些网络浏览器
- 使Google Bot检测AJAX内容