让我们假设两个玩家用一个键盘进行简单的乒乓球游戏。
移动处理程序看起来很简单:
document.addEventListener('keydown', function (event) {
if (event.keyCode === 87) { //w
movePaddle(leftPaddle, 0);
} else if (event.keyCode === 83) { //s
movePaddle(leftPaddle, 1);
} else if (event.keyCode === 38) { //arrow_up
movePaddle(rightPaddle, 0);
} else if (event.keyCode === 40) { //arrow_down
movePaddle(rightPaddle, 1);
}
});
movePaddle
中的第二个参数函数仅表示方向(向上或向下)。
问题:如果 W
和Up Arrow
被压在一起,然后只有一个桨移动。这取决于最后按下的键。
如何正确处理keydown事件?
我需要两个拨片根据按键一起移动。如果W
和Up Arrow
,然后两者都会上升。如果W
和Down Arrow
,然后左上升,右下降。当然,如果只按下一个键,则只有一个拨片应该移动。
最佳答案
https://gist.github.com/RepComm/52690eadaa9f4a3e7a7819b3267feca4
像这样使用它:(在任何类型的循环中,这个只使用动画帧)
Input.init();
var test = function () {
window.requestAnimationFrame(test);
if (Input.isKeyDown("w")) {
console.log("Forward March!");
}
}
window.requestAnimationFrame(test);
关于javascript - 在 JavaScript 游戏中同时处理 WASD 和箭头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44470075/