обработка одновременно двух клавиш клавиатуры
в браузере возможна?
Это: <script type="text/javascript"> document.onkeydown = function(e) { e = e || window.event; if (e.shiftKey && e.keyCode == 65) { alert('Shift + A'); } return true; } </script> не дает должного эффекта. |
Все работает
|
Вот:
<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> Если оставить одну клавишу - работает, две - нет. |
Destrifer,
e.keyCode == 38 && e.keyCode == 39 Как вы себе представляете равенство одной переменной сразу двум значениям? Вам нужно в обработчике снимать/поднимать флаг при нажатии/отпускании клавиши с keyCode 38 и обрабатывать событие нажатия клавиши с keyCode 39, при условии поднятого флага. |
Ясно, спасибо.
p.s. И все же не ясно: Цитата:
|
Когда нажимаешь одну кнопку - поднимается один флаг, когда отпускаешь - опускается. Если нажмешь вторую, поднимется другой флаг. Если первая все еще нажата - подняты оба флага - значит обе кнопки одновеменно нажаты.
|
Цитата:
|
Ну, да, примерно такие ассоциации у меня и возникали, когда это писал :D
|
Цитата:
|
Часовой пояс GMT +3, время: 02:48. |