Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.12.2008, 18:29
Аспирант
Отправить личное сообщение для Destrifer Посмотреть профиль Найти все сообщения от Destrifer
 
Регистрация: 29.11.2008
Сообщений: 64

обработка одновременно двух клавиш клавиатуры
в браузере возможна?
Это:
<script type="text/javascript">
  document.onkeydown = function(e) {
    e = e || window.event;
    if (e.shiftKey && e.keyCode == 65) {
      alert('Shift + A');
    }
    return true;
  }
</script>

не дает должного эффекта.
Ответить с цитированием
  #2 (permalink)  
Старый 13.12.2008, 18:36
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Все работает
Ответить с цитированием
  #3 (permalink)  
Старый 13.12.2008, 18:55
Аспирант
Отправить личное сообщение для Destrifer Посмотреть профиль Найти все сообщения от Destrifer
 
Регистрация: 29.11.2008
Сообщений: 64

Вот:
<html>
<head>
<style>
.gameLayer {position: absolute; top: 0px; left: 0px;}
</style>
<script>
knight = new Image(30,30);
knight.src = '1.png'
var knightObj = {x: 30, y:60};

function init(){
	drawKnight();
}

function drawKnight(){
	var ctx = document.getElementById('playerLayer').getContext("2d");
	ctx.drawImage(knight, knightObj.x, knightObj.y);
}

document.onkeydown = function(e) {
	var ctx = document.getElementById('playerLayer').getContext("2d");
	ctx.clearRect(knightObj.x,knightObj.y,25,30);
    e = e || window.event;
    if (e.keyCode == 38 && e.keyCode == 39) {
      	knightObj.x-=2;
		knightObj.y-=2;
    }
	drawKnight();
}

</script>
</head>
<body onload="init()">
<canvas id="playerLayer" class="gameLayer" height="160" width="300"></canvas>
</body>
</html>

Если оставить одну клавишу - работает, две - нет.
Ответить с цитированием
  #4 (permalink)  
Старый 13.12.2008, 19:00
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Destrifer,
e.keyCode == 38 && e.keyCode == 39

Как вы себе представляете равенство одной переменной сразу двум значениям?

Вам нужно в обработчике снимать/поднимать флаг при нажатии/отпускании клавиши с keyCode 38 и обрабатывать событие нажатия клавиши с keyCode 39, при условии поднятого флага.
Ответить с цитированием
  #5 (permalink)  
Старый 13.12.2008, 19:07
Аспирант
Отправить личное сообщение для Destrifer Посмотреть профиль Найти все сообщения от Destrifer
 
Регистрация: 29.11.2008
Сообщений: 64

Ясно, спасибо.
p.s. И все же не ясно:
Сообщение от Андрей Параничев
снимать/поднимать флаг при нажатии/отпускании клавиши
Если я отпускаю первую клавишу (поднимаю флаг), чтобы обработать нажатие второй, то это уже не есть нажатие двух клавиш.

Последний раз редактировалось Destrifer, 13.12.2008 в 22:17.
Ответить с цитированием
  #6 (permalink)  
Старый 17.12.2008, 12:39
Кандидат Javascript-наук
Отправить личное сообщение для vk65535 Посмотреть профиль Найти все сообщения от vk65535
 
Регистрация: 21.11.2008
Сообщений: 114

Когда нажимаешь одну кнопку - поднимается один флаг, когда отпускаешь - опускается. Если нажмешь вторую, поднимется другой флаг. Если первая все еще нажата - подняты оба флага - значит обе кнопки одновеменно нажаты.
Ответить с цитированием
  #7 (permalink)  
Старый 17.12.2008, 12:48
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от vk65535
Если первая все еще нажата - подняты оба флага - значит обе кнопки одновеменно нажаты.
http://ru.wikipedia.org/wiki/%D0%A0%...83%D0%BA%D0%B0
Ответить с цитированием
  #8 (permalink)  
Старый 17.12.2008, 13:12
Кандидат Javascript-наук
Отправить личное сообщение для vk65535 Посмотреть профиль Найти все сообщения от vk65535
 
Регистрация: 21.11.2008
Сообщений: 114

Ну, да, примерно такие ассоциации у меня и возникали, когда это писал
Ответить с цитированием
  #9 (permalink)  
Старый 20.12.2008, 15:25
Аспирант
Отправить личное сообщение для Destrifer Посмотреть профиль Найти все сообщения от Destrifer
 
Регистрация: 29.11.2008
Сообщений: 64

Сообщение от vk65535 Посмотреть сообщение
Когда нажимаешь одну кнопку - поднимается один флаг, когда отпускаешь - опускается. Если нажмешь вторую, поднимется другой флаг. Если первая все еще нажата - подняты оба флага - значит обе кнопки одновеменно нажаты.
Ага, вот это уже ближе к истине, спасибо
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Событие по нажатии двух клавиш клавиатуры. lancer Events/DOM/Window 11 08.01.2017 14:11