Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Игрушка на HTML5. (https://javascript.ru/forum/misc/24407-igrushka-na-html5.html)

Questioner 28.12.2011 19:05

Игрушка на HTML5.
 
Есть код:
<script>
var deg = 0;
var rot = function(e){
	if (e.keyCode == 37) {// если клавиша "влево"
		deg -= 5;
		deg %= 360;
		document.getElementById('Player').style.MozTransform = 'rotate(' + deg + 'deg' + ')';
		document.getElementById('Player').style.OTransform = 'rotate(' + deg + 'deg' + ')';
		document.getElementById('Player').style.WebkitTransform = 'rotate(' + deg + 'deg' + ')';
	};
	if (e.keyCode == 38) {// если клавиша "вверх"
		document.getElementById("Player").style.top = parseInt(document.getElementById("Player").style.top, 10) - (10 * Math.cos(deg / 180 * Math.PI)) + 'px';
		document.getElementById('Player').style.left = parseInt(document.getElementById('Player').style.left, 10) + (10 * Math.sin(deg / 180 * Math.PI)) + "px";
	}
	if (e.keyCode == 39) {// если клавиша "вправо"
		deg += 5;
		document.getElementById('Player').style.MozTransform = 'rotate(' + deg + 'deg' + ')';
		document.getElementById('Player').style.OTransform = 'rotate(' + deg + 'deg' + ')';
		document.getElementById('Player').style.WebkitTransform = 'rotate(' + deg + 'deg' + ')';
	}
	if (e.keyCode == 40) {// если клавиша "вниз"
		document.getElementById("Player").style.top = parseInt(document.getElementById("Player").style.top, 10) + (10 * Math.cos(deg / 180 * Math.PI)) + 'px';
		document.getElementById('Player').style.left = parseInt(document.getElementById('Player').style.left, 10) - (10 * Math.sin(deg / 180 * Math.PI)) + "px";
	}
}
window.onload = function() {
	document.addEventListener("keydown", rot, false);	
}
</script>
<div ID = "Player" style = "-moz-transform: rotate(0deg);-o-transform: rotate(0deg);-webkit-transform: rotate(0deg); position: absolute; left: 100px; top: 100px; border: 1px solid black">
^
</div>

В принципе, все работает, но почему на "Вверх" и "Вниз" в left другой чем в top знак (+/-)?
И как отслеживать и кноаку "вверх", и кнопку "влево" одновременно?

Livaanderiamarum 28.12.2011 19:11

Цитата:

Сообщение от Questioner
И как отслеживать и кноаку "вверх", и кнопку "влево" одновременно?

При нажатиях записывай какие клавиши зажаты, при отжатии записывай что они отжаты.

при нажатии на, допустим, вверх, проверяй зажата ли в это время клавиша влево или вправо. и если да, то делай действия еще и для неё.

это общий прицеп)

а если еще проще делать как нормальные люди делают, то начинай анимацию когда клавиша зажата, и прекращай анимацию когда клавиша отжата.

Questioner 28.12.2011 20:30

Спасибо!


Часовой пояс GMT +3, время: 15:52.