Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.03.2012, 22:56
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

идентификация одновременного нажатия 2-х и более клавиш
При создании игры на JS столкнулся с невозможностью определить коды нескольких нажатых клавиш (идентифицируется только нажатие последней клавиши). Возможно ли это исправить,
Ответить с цитированием
  #2 (permalink)  
Старый 17.03.2012, 23:49
Server
Отправить личное сообщение для Rootpassword Посмотреть профиль Найти все сообщения от Rootpassword
 
Регистрация: 26.09.2011
Сообщений: 252

Чисто через события-нет. У нас в Event есть код одной нажатой клавиши, + нажатие системных клавиш ctrl alt.. с этой клавишей, одно нажатие-одно событие, все последовательно и однопоточно. Можно попробовать заносить код клавиши в "хэш", что клавиша нажата keydown или keypressed, и удалять ее при событии keyup. Теоретически, пока вы держите клавишу нажатой, будут идти keypressed, т.е. что-то вроде
keydown keypressed keypressed keypressed keypressed keypressed keyup

Последний раз редактировалось Rootpassword, 17.03.2012 в 23:52.
Ответить с цитированием
  #3 (permalink)  
Старый 18.03.2012, 09:45
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Раед, если я правильно понял вопрос [q + w (скан коды)]
<!DOCTYPE HTML>
<html>
	<head>
		<meta charset="utf-8">
	</head>
	<body>
		<script>
		
			function runOnKeys( func, args ) {
			
				var keys = [];
				args.sort( function( a, b ) { return a - b; } );
				
				
				document.onkeyup = function( e ) {
				
					e = e || window.event;
					keys.push( e.keyCode );
					
					if ( keys.length === args.length ) {
					
						keys.sort( function( a, b ) { return a - b; } );
						
						if ( keys.join() === args.join() ) func();
						
						keys = [];
					}
				};
				
				document.onkeydown = function() {
					keys = [];
				};
			}
			
			
			runOnKeys(
				function() { alert( 'Hi' ) },
				[
					"Q".charCodeAt( 0 ),
					"W".charCodeAt( 0 )
				]
			);
		</script>
	</body>
</html>
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук

Последний раз редактировалось nerv_, 18.03.2012 в 09:47.
Ответить с цитированием
  #4 (permalink)  
Старый 18.03.2012, 13:37
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

Сообщение от nerv_
Раед, если я правильно понял вопрос [q + w (скан коды)]
Спасибо, но поняли вы не совсем правильно. Мне не нужно выполнять ф-ию при нажатии 2-х клавиш одновременно. У меня на разные клавиши стоят разные функции. Например, нажата "r". Обработчик onkeydown запускает определённую функцию, пока "r" не отпустят. Затем, не отпуская "r" юзер нажимает "a". Здесь ф-ия, поставленная на "r" перестаёт выполняться и начинает запускаться ф-ия, поставленная на "a", а нужно, чтобы функции 'r' и "a" запускались по очереди.

Rootpassword, Спасибо за идею, попробую реализовать.
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
можно ли с помощью js написать код для симуляции нажатия на клавиш. KamalovRadik Мобильный JavaScript 7 17.02.2012 22:27
Отслеживание нажатия комбинации клавиш MCTrane Общие вопросы Javascript 10 06.02.2011 07:04
эмуляция нажатия клавиш jetli13 Общие вопросы Javascript 4 24.09.2010 12:08
Перехват сочетания нажатия клавиш Ctrl+Tab pauluss Events/DOM/Window 1 23.03.2010 19:32