我尝试用HTML5 / Javascript制作游戏,其中两个玩家开球以获得一个更大的球。 我的节目听" keydown"和#34; keyup"事件,然后将按钮的状态写入" keyMaps"数组,并使用此数组来决定移动球的位置。
驾驶球员球有困难。 我同时按下键盘上的两个箭头按钮(例如"左"和"上")以驱动对角线方向。在此之后,当我释放最后一次按下时(对于PC心灵),我的球停了下来。但是当我第一次按下(给PC心灵)按钮时,我的球没有停止。 此外,我在浏览器中查看了控制台日志,发现当我按下两个按钮时(例如"左箭头"和"向上箭头")只有两个中的一个事件继续传递给movePlayer()函数。同样的问题在这里:character stops after second key pressed is lifted,但没有解决。
为什么只有两个事件中的一个继续在movePlayer()函数中传递以及如何解决这个问题?
以下是我的程序代码:
function movePlayer(e) {
console.log(e.keyCode);
keyMaps[e.keyCode] = e.type == 'keydown';
if ((keyMaps[37]==true) && (keyMaps[40]==true)) {
xP1 -= velocity; yP1 += velocity;
}
if ((keyMaps[37]==true) && (keyMaps[38]==true)) {
xP1 -= velocity; yP1 -= velocity;
}
if ((keyMaps[39]==true) && (keyMaps[40]==true)) {
xP1 += velocity; yP1 += velocity;
}
if ((keyMaps[39]==true) && (keyMaps[38]==true)) {
xP1 += velocity; yP1 -= velocity;
}
if ((keyMaps[65]==true) && (keyMaps[83]==true)) {
xP2 -= velocity; yP2 += velocity;
}
if ((keyMaps[65]==true) && (keyMaps[87]==true)) {
xP2 -= velocity; yP2 -= velocity;
}
if ((keyMaps[68]==true) && (keyMaps[83]==true)) {
xP2 += velocity; yP2 += velocity;
}
if ((keyMaps[68]==true) && (keyMaps[87]==true)) {
xP2 += velocity; yP2 -= velocity;
}
if (keyMaps[37] && !keyMaps[40] && !keyMaps[38] && !keyMaps[39]) {
xP1 -= velocity;
}
if (!keyMaps[37] && keyMaps[40] && !keyMaps[38] && !keyMaps[39]) {
yP1 += velocity;
}
if (!keyMaps[37] && !keyMaps[40] && keyMaps[38] && !keyMaps[39]) {
yP1 -= velocity;
}
if (!keyMaps[37] && !keyMaps[40] && !keyMaps[38] && keyMaps[39]) {
xP1 += velocity;
}
if (keyMaps[65] && !keyMaps[83] && !keyMaps[87] && !keyMaps[68]) {
xP2 -= velocity;
}
if (!keyMaps[65] && keyMaps[83] && !keyMaps[87] && !keyMaps[68]) {
yP2 += velocity;
}
if (!keyMaps[65] && !keyMaps[83] && keyMaps[87] && !keyMaps[68]) {
yP2 -= velocity;
}
if (!keyMaps[65] && !keyMaps[83] && !keyMaps[87] && keyMaps[68]) {
xP2 += velocity;
}
}
document.onkeydown = document.onkeyup = movePlayer;
感谢您的关注!