LWJGL鼠标随机执行多次命令
当我按下鼠标左键时,我试图将我的LWJGL鼠标设置为抓取和不抓取。 然而,这已被证明是一个棘手的问题,因为LWJGL鼠标在某些情况下会多次随机执行该命令。例如:LWJGL鼠标随机执行多次命令,lwjgl,Lwjgl,当我按下鼠标左键时,我试图将我的LWJGL鼠标设置为抓取和不抓取。 然而,这已被证明是一个棘手的问题,因为LWJGL鼠标在某些情况下会多次随机执行该命令。例如: if (Mouse.isButtonDown(0)){ Mouse.setGrabbed( !Mouse.isGrabbed() ); System.out.println("Pushed"); } if(Mouse.isGrabbed()){
if (Mouse.isButtonDown(0)){
Mouse.setGrabbed( !Mouse.isGrabbed() );
System.out.println("Pushed");
}
if(Mouse.isGrabbed()){
camera.processMouse(1, 80, -80);
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;
}
}
如果我运行这段代码,它将在每次推送时随机打印几次“推送”。你们可以想象,当我试图将鼠标设置为每次点击都是真还是假时,这就成了一个问题。在我尝试这段代码的时候,每次点击它都会打印4-7次“推送”
有没有办法让鼠标每次点击只执行一次命令
非常感谢所有花时间帮助我解决这个问题的人
Thomas一个简单的方法是检查一个布尔字段,在单击或释放鼠标后,在块的第一次迭代中翻转该字段,以告诉您这是否是自单击后执行if块的第一次。下面是一个例子:
if (Mouse.isButtonDown(0)){
Mouse.setGrabbed( !Mouse.isGrabbed() );
System.out.println("Pushed");
}
if(Mouse.isGrabbed()){
camera.processMouse(1, 80, -80);
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;
}
}
或者,您可以使用鼠标类的事件缓冲区来检测如下单击:
while(Mouse.next()) {
if(Mouse.getEventButton() == 0) {
if(Mouse.getEventButtonState()) {
// clicked
}
else{
// released
}
}
}
美好的找到解决方案!非常感谢。