当我按下鼠标左键时,我试图将我的LWJGL鼠标设置为抓取而不是抓取。然而,这已经被证明是一个棘手的问题,因为LWJGL鼠标对某些事项随机多次执行命令。举个例子:
if (Mouse.isButtonDown(0)){
Mouse.setGrabbed( !Mouse.isGrabbed() );
System.out.println("Pushed");
}
if(Mouse.isGrabbed()){
camera.processMouse(1, 80, -80);
如果我运行这段代码,它会在每次推送中随机打印几次“按下”。正如你可以想象的那样,当我试图将鼠标设置为从每次点击中抓取真假时,这就变成了一个问题。我试过这段代码时,它每次点击就打印4-7次“按”。
有没有办法让鼠标每次点击只执行一次命令?
首先要感谢每一个花时间帮助我解决这个问题的人。
托马斯
发布于 2014-06-08 23:34:34
一种简单的方法是检查一个布尔字段,在单击或释放鼠标后,在块的第一次迭代中翻转该字段,以告诉您这是否是自单击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;
}
}
或者,您可以使用鼠标类的事件缓冲区来检测以下单击:
while(Mouse.next()) {
if(Mouse.getEventButton() == 0) {
if(Mouse.getEventButtonState()) {
// clicked
}
else{
// released
}
}
}
https://stackoverflow.com/questions/24107010
复制相似问题