自定义按钮在点击时被执行 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);
}

如果你有问题,我会尽力回答:)