-1

当我按下方向键将对象朝那个方向移动时,它会移动一次,然后暂停片刻,然后再次移动。有点像如果我想输入“aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,我会按住“a”键,但是在第一个“a”之后有一个暂停,然后输入其余的“a”。如何删除 KeyListener 中的暂停?谢谢你。

4

1 回答 1

1

这是操作系统提供的关键重复功能,因此无法绕过暂停。大多数游戏解决这个问题的方法是保留所有必需键的当前状态数组,并定期检查它们(例如在游戏循环中)并采取行动(例如移动)。

public class KTest extends JFrame implements KeyListener {
    private boolean[] keyState = new boolean[256];

    public static void main(String[] args) { 
        new KeyTest();

        int xVelocity = 0;

        int x = 0;

        while(1) {
            xVelocity = 0;

            if(keyState[KeyEvent.VK_LEFT]) {
                xVelocity = -5;
            }

            x += xVelocity;
        }
    } 

    KTest() {
        this.addKeyListener(this);
    }
    void keyPressed(KeyEvent e) {
        key_state[e.getKeyCode()] = true;
    }
    void keyReleased(KeyEvent e) {
        key_state[e.getKeyCode()] = false;
    }
}

基类取自:http ://content.gpwiki.org/index.php/Java:Tutorials:Key_States

于 2012-12-22T19:00:46.897 回答