0

我正在用光滑的方式做我自己的输入窗口,用户需要在其中输入一些内容。但是当我输入任何字母时,我会得到不止一个。我认为这取决于 CPU,我当前的旁路是在我输入时让线程休眠 100 毫秒。有没有其他方法可以做到这一点并且只收到一封信?

这是我的代码

    if (input.isKeyDown(Input.KEY_0)) {
        IPInput += "0";
        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
4

2 回答 2

1

根据我的评论......

您可以替换isKeyPressed()isKeyDown().

KeyPress - 当用户按下一个键并释放它时触发(按下键然后向上键)

KeyDown - 当用户按下键时触发(key down)

于 2012-11-28T18:49:10.600 回答
0

您始终可以使用键盘侦听器,他们可以更好地控制您使用键盘的目的。

在您的 BasicGameStates 之一中,您可以使用:

public class Game extends BasicGameState{

public String answer = "";


    public void keyPressed(int key, char c) {

            if (key == Input.KEY_0) {
                answer += "0";
            }

                super.keyPressed(key, c);
    }

    public void keyReleased(int key, char c) {

            if (key == Input.KEY_0) {
                answer += "0";
            }

                super.keyReleased(key, c);
    }
}

keyPressed 响应是当键被按下时,而不是另一个在键被释放时做出反应。

于 2013-12-28T20:27:14.547 回答