Вообще это адский ад. Глобальные переменные, switch практически с копипастой… Попробуй почитать какую-нибудь умную книжку по ООП, например «Совершенный код» или что-нибудь вроде этого.
var KEY_W = 87;
var KEY_A = 65;
var KEY_S = 83;
var KEY_D = 68;
var keysPressed = [];
document.onkeydown = function (e) {
keysPressed.push(e.keyCode);
};
document.onkeyup = function (e) {
var index = keysPressed.indexOf(e.keyCode);
if (index) {
keysPressed.splice(index, 1);
}
};
//...
function loop () {
requestAnimationFrame(loop);
//...
snakeObj.moving(keysPressed);
}
Snake.prototype.moving = function (e) {
var dx = 0, dy = 0;
if (keysPressed.indexOf(KEY_W) > -1) {
dy = -SPEED;
}
if (keysPressed.indexOf(KEY_A) > -1) {
dx = -SPEED;
}
if (keysPressed.indexOf(KEY_S) > -1) {
dy = SPEED;
}
if (keysPressed.indexOf(KEY_D) > -1) {
dx = SPEED;
}
if (dx !== 0 || dy !== 0) {
snakeObj.redrawing(
this.snake.getAttr("x") + dx,
this.snake.getAttr("y") + dy
);
snakeObj.clearSnake();
}
}