Использование keyListeners с несколькими потоками / связывание ключей - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь сделать безумно простую игру, но все равно может потребоваться около 8 клавиш одновременно.

Используя keyListener, я могу взять 3-4 с некоторыми задержками, которые мне не нужны.

Я понятия не имею, как использовать связывание клавиш, которое, как я полагаю, решит мою проблему. (Пожалуйста, не помещайте эту ссылку, я смотрел на нее, а также на другие источники: https://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html)

Моим первым предположением было добавить темы в keyListener, но я понятия не имею, как это сделать, и поиск не дал мне приличного ответа.

private void makeKeyListeners() {
    f.addKeyListener(new KeyListener() {
        @Override
        public void keyTyped(KeyEvent e) {}

        @Override
        public void keyPressed(KeyEvent e) {
            int key = e.getKeyCode();
            switch (key) {. . .}
        }

        @Override
        public void keyReleased(KeyEvent e) {
            int key = e.getKeyCode();
            switch (key) {. . .}
        }
    });
}

Используя это, я не получаю достаточно ввода (не могу обнаружить одновременно нажатие 8 клавиш)

Так что мой большой вопрос; Как я могу получить ввод с 8+ клавиш одновременно?

Если лучший способ решить это с помощью связывания клавиш, не могли бы вы сделать мне одолжение и объяснить их подробно?

1 Ответ

0 голосов
/ 22 января 2019

Это аппаратная проблема. Я пошел на http://blog.controlspace.org/2010/08/n-key-rollover-what-it-is-and-how-to.html?m=1 (комментарий MadProgrammer) и протестировал 3 разные клавиатуры, которые у меня есть, и все они работают по-разному.

...