Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.12.2011, 19:05
Аспирант
Отправить личное сообщение для Questioner Посмотреть профиль Найти все сообщения от Questioner
 
Регистрация: 03.02.2011
Сообщений: 80

Игрушка на 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 знак (+/-)?
И как отслеживать и кноаку "вверх", и кнопку "влево" одновременно?

Последний раз редактировалось Questioner, 28.12.2011 в 19:07.
Ответить с цитированием
  #2 (permalink)  
Старый 28.12.2011, 19:11
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

Сообщение от Questioner
И как отслеживать и кноаку "вверх", и кнопку "влево" одновременно?
При нажатиях записывай какие клавиши зажаты, при отжатии записывай что они отжаты.

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

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

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

Последний раз редактировалось Livaanderiamarum, 28.12.2011 в 19:14.
Ответить с цитированием
  #3 (permalink)  
Старый 28.12.2011, 20:30
Аспирант
Отправить личное сообщение для Questioner Посмотреть профиль Найти все сообщения от Questioner
 
Регистрация: 03.02.2011
Сообщений: 80

Спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
HTML5 в наше время это что? Policeman (X)HTML/CSS 4 06.12.2011 10:27
vkontakte, html5 и как почему не перезагружается страница olga153b Events/DOM/Window 10 02.11.2011 15:20
Когда тэги типа <font> исчезнут? Alex455 (X)HTML/CSS 10 14.06.2011 20:14
Все тот же innerHTML и IE (работа с динамической таблицей HTML5) abstract Internet Explorer 7 16.12.2010 18:19
HTML5 Как сделать, чтобы можно было двигать картинку мышью? Бобр Общие вопросы Javascript 2 18.06.2010 21:22