Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java键盘输入在每次单击时被注册多次_Java_Eclipse - Fatal编程技术网

Java键盘输入在每次单击时被注册多次

Java键盘输入在每次单击时被注册多次,java,eclipse,Java,Eclipse,我是一名新的Java程序员,仍在学习。我正在为学校做一个简单的游戏,只需要键盘输入作为主要功能。我遇到了一个让我发疯的小问题 我设置了KeyManager,在另一个类中,我有: 编辑:我在getInput()中添加了一些逻辑,但仍然存在相同的问题。编辑将位于其他if语句的上方 private void getInput(){ int OneSec =1000; long Time = System.currentTimeMillis(); long Time2= Sys

我是一名新的Java程序员,仍在学习。我正在为学校做一个简单的游戏,只需要键盘输入作为主要功能。我遇到了一个让我发疯的小问题

我设置了KeyManager,在另一个类中,我有:

编辑:我在getInput()中添加了一些逻辑,但仍然存在相同的问题。编辑将位于其他if语句的上方

private void getInput(){

    int OneSec =1000;
    long Time = System.currentTimeMillis();
    long Time2= System.currentTimeMillis();
    long longtime = 999999;

    if(Time>OneSec){
        Time=longtime-Time2;
    }

if(Time<OneSec){

    if(handler.getKeyManager().one){
        x1++;
        System.out.println("1 has been pressed");
    }
    if(handler.getKeyManager().two){
        x2++;
        System.out.println("2 has been pressed");
    }
    if(handler.getKeyManager().three){
        x3++;
        System.out.println("3 has been pressed");
    }


}
}
这是我正在使用的KeyManager类

出于某种原因,当我单击一次时,只要正常单击它,它就会像我多次单击一样读取它,原因是它会计算按钮被按下的时间。现在我无法控制别人怎么按键,这会给我的游戏带来问题

我只需要代码读取每个按键作为一个输入,而不是多个

如果我不够清楚或者我需要发布更多的代码,请告诉我。
提前谢谢。

您需要某种逻辑来检查按键是否已按下,并阻止进一步计数,直到松开为止。如果这就是你所追求的逻辑。i、 e

if(!pressed) { if (key pressed once) then pressed=true; }

if(key released) then pressed=false

这个KeyManager类是什么?您不能使用扫描仪吗?您可以发布
KeyManager
对象的代码,以及调用
getInput()
的位置吗?如果反复调用
getInput()
,并且
handler.getKeyManager().one
true
如果按键按下(而不仅仅是按下),则这可能是问题的原因。getInput()只被调用一次,我可以保证。也许我可以使用扫描器,但出于作业的目的,我宁愿使用键盘输入/键盘侦听器。这就是我想要的逻辑,感谢您的洞察力。
if(!pressed) { if (key pressed once) then pressed=true; }

if(key released) then pressed=false