Сделал передвижение игрока по клавишам WASD. И все бы хорошо, нажал W - движется вверх, S - вниз, но как быть когда нажаты 2 одновременно (должно быть движение по диагонали или стоп).
document.onkeydown = function (e) {
keyPressed = e.keyCode;
}
document.onkeyup = function (e) {
keyPressed = null;
}
//...
function loop () {
requestAnimationFrame(loop);
//...
if (keyPressed === 87 || keyPressed===65 || keyPressed===83 || keyPressed===68) {
snakeObj.moving(keyPressed);
}
}
Snake.prototype.moving = function (e) {
switch (e) {
case 87:
snakeObj.redrawing(this.snake.getAttr("x"),this.snake.getAttr("y")-SPEED);
snakeObj.clearSnake();
break;
case 65:
snakeObj.redrawing(this.snake.getAttr("x")-SPEED, this.snake.getAttr("y"));
snakeObj.clearSnake();
break;
case 83:
snakeObj.redrawing(this.snake.getAttr("x"),this.snake.getAttr("y")+SPEED);
snakeObj.clearSnake();
break;
case 68:
snakeObj.redrawing(this.snake.getAttr("x")+SPEED,this.snake.getAttr("y"));
snakeObj.clearSnake();
break;
}
}
Как быть? Есть кое-какие мысли (добавить еще один слушатель в функции первого), но не уверен в их правильности.