идентификация одновременного нажатия 2-х и более клавиш
При создании игры на JS столкнулся с невозможностью определить коды нескольких нажатых клавиш (идентифицируется только нажатие последней клавиши). Возможно ли это исправить,
|
Чисто через события-нет. У нас в Event есть код одной нажатой клавиши, + нажатие системных клавиш ctrl alt.. с этой клавишей, одно нажатие-одно событие, все последовательно и однопоточно. Можно попробовать заносить код клавиши в "хэш", что клавиша нажата keydown или keypressed, и удалять ее при событии keyup. Теоретически, пока вы держите клавишу нажатой, будут идти keypressed, т.е. что-то вроде
keydown keypressed keypressed keypressed keypressed keypressed keyup |
Раед, если я правильно понял вопрос [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>
|
Цитата:
Rootpassword, Спасибо за идею, попробую реализовать. |
| Часовой пояс GMT +3, время: 23:10. |