Java - 按下方向键并使其平稳移动

时间:2012-12-22 18:29:25

标签: keylistener

当我按下方向键向该方向移动物体时,它移动一次,暂停,然后再移动。有点像我要输入“aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa”,我会按下“a”键,但是在第一个“a”之后有一个暂停,然后输入“a”的其余部分。如何在KeyListener中删除该暂停?谢谢。

1 个答案:

答案 0 :(得分: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