我正在编程的游戏中有以下代码:
public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_SPACE) {
doIShoot = false;
}
}
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_SPACE) {
shoot();
}
}
public void shoot(){
if(!doIShoot){
doIShoot = true;
// code that creates bullet
}
}
目的是玩家必须为每颗子弹按下按钮,当他保持空间时它不应该自动射击。在 Windows 中可以正常工作,但在 Ubuntu Linux 中却不行。似乎当我持有空间时,它总是会交替执行 keyReleased 和 keyPressed 。
为什么 Ubuntu 这样做,我怎样才能让它工作?
编辑:
我刚刚发现:如何在 Swing 中停止重复的 keyPressed() / keyReleased() 事件
编辑2:
解决方案: http: //brunez.net63.net/tutorials/keypressfix/keypressfix.php