Для игры я использую KeyListener
, чтобы узнать, когда нажата клавиша.
public synchronized void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
keyRightIsDown = true;
}
}
public synchronized void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
keyRightIsDown = false;
}
}
Это работает на 99,9%. Но время от времени (достаточно часто), keyReleased
не вызывается, когда клавиша отпускается (из-за чего игровой персонаж продолжает двигаться вправо - повторное нажатие клавиши решает проблему).
[Может быть уместно:] Я использую OSX 10.6 и часто нажимаю одновременно несколько клавиш.
Как я могу сделать эту работу на 100%?