Показать сообщение отдельно
  #1 (permalink)  
Старый 15.08.2014, 23:08
Интересующийся
Отправить личное сообщение для Straj Посмотреть профиль Найти все сообщения от Straj
 
Регистрация: 05.08.2014
Сообщений: 16

Движение игрока по стрелкам.
Сделал передвижение игрока по клавишам 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;
	}
}


Как быть? Есть кое-какие мысли (добавить еще один слушатель в функции первого), но не уверен в их правильности.
Ответить с цитированием