自定义按钮在点击时被执行 3-4 次
Custom button is being executed 3-4 times on click
我制作了一个简单的按钮 class(使用 lwjgl 渲染矩形),但是当我单击按钮时,单击时应该 运行 的代码执行了 1-5 次。
这是来自按钮 class 的方法:
public boolean clicked(float mX, float mY){
if(mX >= x && mX <= x + width &&
mY <= Display.getHeight() - y && mY >= Display.getHeight() - (y + height)){
return true;
}else{
return false;
}
}
下面是 class 中使用按钮 class 和方法的代码:
public void getInput(){
if(Mouse.next()){
if(Mouse.isButtonDown(0)){
if(b.clicked(Mouse.getX(), Mouse.getY())){
System.out.println("button clicked");
}
}
}
}
谢谢!
解决方案非常简单:您必须在按下鼠标按钮时调用我们 Mouse.isButtonDown。因此,如果您按下鼠标 1 秒钟,它会调用此方法大约 50 次(取决于您程序的滴答率)。您必须使用一个布尔值来存储最后一次滴答时的状态。这可能看起来像这样:
boolean prevState;
public void update(...){
if(Mouse.isButtonDown(0) && !prevState){
item++;
}
prevState = Mouse.isButtonDown(0);
}
如果你有问题,我会尽力回答:)
我制作了一个简单的按钮 class(使用 lwjgl 渲染矩形),但是当我单击按钮时,单击时应该 运行 的代码执行了 1-5 次。
这是来自按钮 class 的方法:
public boolean clicked(float mX, float mY){
if(mX >= x && mX <= x + width &&
mY <= Display.getHeight() - y && mY >= Display.getHeight() - (y + height)){
return true;
}else{
return false;
}
}
下面是 class 中使用按钮 class 和方法的代码:
public void getInput(){
if(Mouse.next()){
if(Mouse.isButtonDown(0)){
if(b.clicked(Mouse.getX(), Mouse.getY())){
System.out.println("button clicked");
}
}
}
}
谢谢!
解决方案非常简单:您必须在按下鼠标按钮时调用我们 Mouse.isButtonDown。因此,如果您按下鼠标 1 秒钟,它会调用此方法大约 50 次(取决于您程序的滴答率)。您必须使用一个布尔值来存储最后一次滴答时的状态。这可能看起来像这样:
boolean prevState;
public void update(...){
if(Mouse.isButtonDown(0) && !prevState){
item++;
}
prevState = Mouse.isButtonDown(0);
}
如果你有问题,我会尽力回答:)