gpt4 book ai didi

javascript - 我的基于网络的 javascript 游戏对 onkeyup 事件不是很敏感。如何让程序检测所有击键而不仅仅是其中一些击键?

转载 作者:行者123 更新时间:2023-11-28 09:06:54 25 4
gpt4 key购买 nike

我正在为两个玩家制作一个基于网络的赛马游戏,其中一匹马使用箭头键控制,另一匹马使用 asdw 键控制。我使用 html 和 javascript。我的问题是程序似乎只在某些时候(大约 65% 的时间)检测到按键事件,因此游戏对按键 react 不是很敏感。我的代码如下:

我的相关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() 等函数仅包含根据按键事件更改马匹速度的代码。

即使只有一名玩家正在玩游戏,程序也只能检测到 65% 的击键(大约)(与同时击键无关)。

最佳答案

使用这个jsFiddle key tracking code我似乎无法让它错过一个关键捕获,可能是另一个元素正在捕获并防止事件冒泡,或者浏览器可能被该运动淹没(我将 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;
}
};

关于javascript - 我的基于网络的 javascript 游戏对 onkeyup 事件不是很敏感。如何让程序检测所有击键而不仅仅是其中一些击键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16923857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com