【问题标题】:Keyboard Repeat Delay turned on unexpectedly键盘重复延迟意外打开
【发布时间】:2012-11-03 19:56:09
【问题描述】:

我对 java 比较陌生,并且 我正在制作一个涉及使用箭头键移动对象的游戏(按住的时间越长移动的越快)。

这是这些动作的代码(我正在使用 keylistener):

public void keyPressed(KeyEvent e) {

    int c = e.getKeyCode();

        if(c == KeyEvent.VK_A||c == KeyEvent.VK_LEFT){
            PacMan.velX -= PacMan.speed;
            PacMan.move = true;
            //PacMan.velY = 0;
            System.out.println("LEFT");
        }
        if(c == KeyEvent.VK_D||c == KeyEvent.VK_RIGHT){
            PacMan.velX += PacMan.speed;
            PacMan.move = true;
            //PacMan.velY = 0;
            System.out.println("RIGHT");
        }
        if(c == KeyEvent.VK_W||c == KeyEvent.VK_UP){
            PacMan.velY -= PacMan.speed;
            PacMan.move = true;
            //PacMan.velX = 0;
            System.out.println("UP");
        }
        if(c == KeyEvent.VK_S||c == KeyEvent.VK_DOWN){
            PacMan.velY += PacMan.speed;
            PacMan.move = true;
            //PacMan.velX = 0;
            System.out.println("DOWN");
        }
        if(c == KeyEvent.VK_ESCAPE){
            if(Main.pause == false){Main.pause = true;Main.move = true;}
            else if (Main.pause == true){Main.pause = false;Main.move = false;}
            System.out.println("Pause");
        }
        if(c == KeyEvent.VK_R){
            Levels.setLevel();
        }
        if(c == KeyEvent.VK_E){
            if(nextLevel){nextLevel = false;
            Levels.setLevel();}
        }

        Main.start = true;  

}

这很好,直到我移到 Windows 8(从 windows xp)。现在,每当我按住箭头键时,键盘重复延迟率就会打开。因此对象将移动 1 步然后暂停,然后开始其他步骤(就像在文本字段中键入时按住字母一样)。

我想关闭这个游戏的键盘重复延迟,我不知道该怎么做。 此外,我希望能够一次握住多个钥匙(这样它就可以斜着走)。

我试图理解 KeyBindings,但在这样做时遇到了麻烦。

【问题讨论】:

    标签: windows-8 keyboard delay keylistener key-bindings


    【解决方案1】:

    我不知道如何从代码中更改键盘重复延迟,但您可以做的一件事是在 keydown 事件上开始处理(增加或降低速度)并在 keyupevent 上停止它。这样您就不会依赖键盘速率延迟。

    你可以看看 - http://www.gamedev.net/topic/91523-changing-the-typematic-rate-delay/

    问题略有不同,但解决方案相同。

    【讨论】:

    • 谢谢,我可以这样做。我希望有办法解决我的具体问题,当然有办法解决这个问题。我会等待其他人回答:)
    • okk :) 如果您以后使用我建议的内容,请在答案上方标记。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 2022-06-14
    • 2014-02-14
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    相关资源
    最近更新 更多