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