LWJGL鼠标随机多次执行命令

时间:2014-06-08 14:14:00

标签: lwjgl

当我按下鼠标左键时,我试图将我的LWJGL鼠标设置为抓住而不是抓住。 然而,事实证明这已成为一个棘手的问题,因为LWJGL鼠标在某些情况下会随机多次执行命令。举个例子:

if (Mouse.isButtonDown(0)){
            Mouse.setGrabbed( !Mouse.isGrabbed() );
            System.out.println("Pushed");
        } 
       if(Mouse.isGrabbed()){
           camera.processMouse(1, 80, -80);

如果我运行此代码,它将在每次推送时随机打印几次“推送”。你可以想象,当我尝试将鼠标设置为每次点击时抓取真或假时,就会出现问题。我尝试过这段代码的时候,每次点击打印“推”4到7次

有没有办法让鼠标每次点击只执行一次命令?

非常感谢所有需要时间帮助我解决这个问题的人。

托马斯

1 个答案:

答案 0 :(得分:0)

一种简单的方法是检查一个布尔字段,在单击或释放鼠标后,在块的第一次迭代时翻转,以告诉您这是否是自单击if块以来第一次执行。这是一个例子:

private boolean alreadyClicked;
void someMethod(){
    if(Mouse.isButtonDown(0)){
        if(!alreadyClicked){
            alreadyClicked = true;
            // do what you want to do when the mouse is clicked
        }
    }
    else{
        alreadyClicked = false;
    }
}

或者,您可以使用Mouse类的事件缓冲区来检测这样的点击:

while(Mouse.next()) {
    if(Mouse.getEventButton() == 0) {
        if(Mouse.getEventButtonState()) {
            // clicked
        }
        else{
            // released
        }
    }
}