【发布时间】:2017-06-10 05:56:11
【问题描述】:
让我们假设两个玩家使用一个键盘进行简单的乒乓球游戏。
移动处理程序看起来很简单:
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 被压在一起,那么只有一个桨移动。这取决于最后按下的是哪个键。
如何正确处理按键事件?
我需要两个桨根据按下的键一起移动。如果W 和Up Arrow,那么两者都上涨。如果W 和Down Arrow,那么左上去右下。当然,如果只按下一个键,则只有一个桨应该移动。
【问题讨论】:
-
您不能在活动中移动桨,您需要在“游戏循环”中不断移动它。 onkeydown,您为每个桨设置一个状态
isMoving=true。在游戏循环中,if(isMoving)然后移动桨。 onkeyup,设置isMoving=false。这是执行此操作的唯一方法,因为键盘一次无法在多个键上触发重复的“打字”事件。
标签: javascript