【问题标题】:Stop windows Key Input Delay in Java在Java中停止Windows键输入延迟
【发布时间】:2014-05-01 09:07:41
【问题描述】:

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

暂停来自带有按键延迟的 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();
        }
    }
}

【问题讨论】:

    标签: java keyevent


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢。我刚刚为上下左右创建了 4 个布尔值,在我的运行方法中,根据哪个布尔值为真,它将执行一个动作,然后将其延迟 10 毫秒
    • 顺便说一句。这个问题已经被问过好几次了,例如here..
    • 然而,没有一个问题的标题和我的一样。我知道如何做关键事件,只是不确定如何摆脱延迟。
    猜你喜欢
    • 1970-01-01
    • 2012-12-27
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    • 2019-11-03
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    相关资源
    最近更新 更多