Javascript.RU

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

Перемещение картинки без задержки
Доброго времени суток, дамы и господа.
Как добиться нормального, плавного перемещения картинки при удержании клавиши без задержки?
Проблема такая: жмём клавишу вправо, картинка перемещается (в моём случае на 4 пиксели), застывает на секунду и дальше снова движется без задержек.
Код:
addEventListener("keydown", function(event) {
		positionX = parseInt(document.getElementById("mainTankMove").style.left);
		positionY = parseInt(document.getElementById("mainTankMove").style.top);
		
		if (event.keyCode == 39) {
			if (positionX >= 573) {
				positionX = 572;
			}
			positionX = positionX + 4;
			document.getElementById("mainTankMove").style.left = positionX;
			document.getElementById("mainTank").style.transform = "rotate(90deg)";
		}
	});
	
	addEventListener("keyup", function(event) {
		alert ("qwe");
	}

З.Ы. прошу прощения за кривоту описания, по другому не умею.
Ответить с цитированием
  #2 (permalink)  
Старый 22.01.2015, 11:05
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Зависит от Операционки и настроек клавиатуры. keydown сначала генерируется при нажатии, и затем, после задержки генерируется беспрерывно пока не отпустишь клавишу.

Если не устраивает, используй другую логику: Слушай первое событие keydown, в нем делай первое перемещение, запускай таймер, по которому будут делаться остальные перемещения, остальные события keydown игнорируй (либо через флаг, либо через removeEventListener). По keyup останавливаешь таймер и восстанавливаешь обработчик keydown (или очищаешь флаг).
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 22.01.2015, 19:52
Новичок на форуме
Отправить личное сообщение для KoliK29 Посмотреть профиль Найти все сообщения от KoliK29
 
Регистрация: 21.01.2015
Сообщений: 5

Можно разжевать, как для "не очень умных"?
Только начал постигать азы js.
Ах да, код в первом моём сообщении не рабочий:
addEventListener("keydown", function(event) {
	
		positionX = parseInt(document.getElementById("mainTankMove").style.left);
		positionY = parseInt(document.getElementById("mainTankMove").style.top);
		
		if (event.keyCode == 39) {
			if (positionX >= 573) {
				positionX = 572;
			}
			positionX = positionX + 4;
			document.getElementById("mainTankMove").style.left = positionX;
			document.getElementById("mainTank").style.transform = "rotate(90deg)";
		}
}

Последний раз редактировалось KoliK29, 22.01.2015 в 19:54.
Ответить с цитированием
  #4 (permalink)  
Старый 22.01.2015, 20:16
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

KoliK29, что именно не ясно? Задавай конкретные вопросы. И зачем ты постишь опять тот же самый код? Проблемы с памятью?
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прокрутка картинки без скролла Johnlion Angular.js 3 27.05.2014 14:37
Одновременно смена картинки и ее перемещение. wadim Общие вопросы Javascript 1 16.03.2014 18:45
перемещение картинки методами jquery imediasun1 Элементы интерфейса 3 27.11.2013 16:20
setTimeout и setInterval срабатывают без задержки! ПОЧЕМУ? shureg Общие вопросы Javascript 1 12.05.2011 09:06
Как сделать смену картинки, типа "до" и "после", без перезагрузки страницы? btstudio Events/DOM/Window 2 23.02.2009 20:43