Как я могу поймать 2+ нажатия клавиш одновременно?
Ну, в последнее время я заинтересовался созданием игр JS. (не та область, с которой у меня есть опыт, но она меня интересует).
Я знаю, что есть несколько игровых движков для JS, но я не хочу создавать игру. скорее мне интересно, как все работает / как я могу его создать.
У меня есть несколько вопросов:
Кто-нибудь с предложениями, где я могу прочитать об этом? Обязательное условие (какие знания нужны).
Я попытался сделать небольшую игру, что-то, идущее по прямоугольнику. Связав keyup с окном и проверив
event.which
чтобы получить ключ, который был нажат. Я понял, что если я нажму на 2 кнопки одновременно, будет зарегистрирована только 1 из них. как я могу преодолеть это?$(window).keyup(function(event){ globalEvent = event.which; });
2 ответа
Чтобы прямо ответить на ваш второй вопрос.
Вот один из способов:
var keyPressed = {};
$(window).keydown(function(e) {
keyPressed[e.which] = true;
}).keyup(function(e) {
keyPressed[e.which] = false;
});
Теперь вы можете использовать keyPressed
всякий раз, когда вы хотите определить, не нажата ли клавиша:
// wherever
var key1 = 65, key2 = 66; // A and B
if (keyPressed[key1] && keyPressed[key2]) {
// A and B are both being pressed.
}
Чтобы обнаружить несколько нажатых клавиш, используйте события keydown и keyup.
var keys = {};
$(document).keydown(function (e) {
keys[e.which] = true;
});
$(document).keyup(function (e) {
delete keys[e.which];
});