嗨,我在键向上和向下键事件中苦苦挣扎,我的努力是使屏幕上的对象在同时按下键"s"和"d"或"a"和"w"等后对角线移动。我读了很多关于这个的话题,对我来说没有结论。
这就是我到目前为止得到的:
window.addEventListener("keydown", keysPressed, false);
window.addEventListener("keyup", keysReleased, false);
var keys = [];
function keysPressed(e) {
keys[e.keyCode] = true;
var oldLeft = getComputedStyle(document.body).left,
newLeft;
var oldTop = getComputedStyle(document.body).top,
newTop;
oldLeft = parseInt(oldLeft);
oldTop = parseInt(oldTop);
if (keys[65]) {
newLeft = oldLeft - 10;
}
else if (keys[68]) {
newLeft = oldLeft + 10;
}
else if (keys[87]) {
newTop = oldTop - 10;
}
else if (keys[83]) {
newTop = oldTop + 10;
}
document.body.style.left = newLeft + 'px';
document.body.style.top = newTop + 'px';
e.preventDefault();
}
function keysReleased(e) {
keys[e.keyCode] = false;
}
我知道那里有很多类似的问题,我看到了很多,但仍然无法理解它是如何工作的。
您需要
删除else if (keys[87]) {
中的else
,使用当前代码,如果按左或右,您不会检查向上/向下。
注意:我没有检查键码,但我认为它们对应于您想要的键。