在Java中停止窗口键输入延迟

时间:2014-05-01 09:07:41

标签: java keyevent

我正在创建一个侧滚动游戏,当前我按箭头键时,角色移动,暂停然后无限移动直到释放该键。

暂停来自带有按键延迟功能的Windows配置,因此,如果按住按键太长,则不会意外输入重复按键。

我想知道是否有办法摆脱这种情况。

这是我的按键代码:

public void keyReleased(KeyEvent ke){}

public void keyTyped(KeyEvent ke){}

public void keyPressed(KeyEvent ke){
    int code = ke.getKeyCode();

    if(code == KeyEvent.VK_UP){
        if(playerY > 0){
            playerY-=speed;
            repaint();
        }
    }

    else if(code == KeyEvent.VK_DOWN){
        if(playerY < 600){
            playerY+=speed;
            repaint();
        }
    }

    else if(code == KeyEvent.VK_RIGHT){
        if(playerX < 800){
            playerX+=speed;
            repaint();
        }
    }

    else if(code == KeyEvent.VK_LEFT){
        if(playerX > 0){
            playerX-=speed;
            System.out.println(playerX);
            repaint();
        }
    }
}

1 个答案:

答案 0 :(得分:1)

按下该键时,您应设置一些变量来确定移动。在KeyReleased上你取消设置这个变量。

如何处理它以调用方法,例如moveLeft(),并在循环中检查此变量。在KeyReleased上,当你重新定义它时,循环结束。