3

我正在编程的游戏中有以下代码:

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

4

0 回答 0