Показать сообщение отдельно
  #4 (permalink)  
Старый 16.08.2014, 00:52
Аватар для ixth
Профессор
Отправить личное сообщение для ixth Посмотреть профиль Найти все сообщения от ixth
 
Регистрация: 19.01.2010
Сообщений: 354

Вообще это адский ад. Глобальные переменные, 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();
	}
}
Ответить с цитированием