идентификация одновременного нажатия 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, время: 09:07. |