Поскольку вы никогда не устанавливаете значение keysPressed
на false
, состояние остается неизменным, даже если вы отпустите клавишу.
Вы можете записать это так:
let keysPressed = ['a', 'w', 'd', 's'];
const box1 = document.getElementById('box1');
const tick = () => {
let box1x = box1.offsetLeft;
let box1y = box1.offsetTop;
if (keysPressed['d'] && keysPressed['s']) {
box1.style.left = box1x + 20 + 'px';
box1.style.top = box1y + 20 + 'px';
} else if (keysPressed['a'] && keysPressed['s']) {
box1.style.left = box1x - 20 + 'px';
box1.style.top = box1y + 20 + 'px';
} else if (keysPressed['w'] && keysPressed['a']) {
box1.style.left = box1x - 20 + 'px';
box1.style.top = box1y - 20 + 'px';
} else if (keysPressed['w'] && keysPressed['d']) {
box1.style.left = box1x + 20 + 'px';
box1.style.top = box1y - 20 + 'px';
} else if (keysPressed['w']) {
box1.style.top = box1y - 20 + 'px';
} else if (keysPressed['s']) {
box1.style.top = box1y + 20 + 'px';
} else if (keysPressed['a']) {
box1.style.left = box1x - 20 + 'px';
} else if (keysPressed['d']) {
box1.style.left = box1x + 20 + 'px';
}
};
document.addEventListener('keydown', (event) => {
keysPressed[event.key] = true;
tick();
});
document.addEventListener('keyup', (event) => {
keysPressed[event.key] = false;
tick();
});