当我按下鼠标左键时,我试图将我的LWJGL鼠标设置为抓住而不是抓住。 然而,事实证明这已成为一个棘手的问题,因为LWJGL鼠标在某些情况下会随机多次执行命令。举个例子:
if (Mouse.isButtonDown(0)){
Mouse.setGrabbed( !Mouse.isGrabbed() );
System.out.println("Pushed");
}
if(Mouse.isGrabbed()){
camera.processMouse(1, 80, -80);
如果我运行此代码,它将在每次推送时随机打印几次“推送”。你可以想象,当我尝试将鼠标设置为每次点击时抓取真或假时,就会出现问题。我尝试过这段代码的时候,每次点击打印“推”4到7次
有没有办法让鼠标每次点击只执行一次命令?
非常感谢所有需要时间帮助我解决这个问题的人。
托马斯
答案 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
}
}
}