首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >LWJGL小鼠随机多次执行命令

LWJGL小鼠随机多次执行命令
EN

Stack Overflow用户
提问于 2014-06-08 14:13:59
回答 1查看 53关注 0票数 0

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

代码语言:javascript
运行
复制
if (Mouse.isButtonDown(0)){
            Mouse.setGrabbed( !Mouse.isGrabbed() );
            System.out.println("Pushed");
        } 
       if(Mouse.isGrabbed()){
           camera.processMouse(1, 80, -80);

如果我运行这段代码,它会在每次推送中随机打印几次“按下”。正如你可以想象的那样,当我试图将鼠标设置为从每次点击中抓取真假时,这就变成了一个问题。我试过这段代码时,它每次点击就打印4-7次“按”。

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

首先要感谢每一个花时间帮助我解决这个问题的人。

托马斯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-08 23:34:34

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

代码语言:javascript
运行
复制
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;
    }
}

或者,您可以使用鼠标类的事件缓冲区来检测以下单击:

代码语言:javascript
运行
复制
while(Mouse.next()) {
    if(Mouse.getEventButton() == 0) {
        if(Mouse.getEventButtonState()) {
            // clicked
        }
        else{
            // released
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24107010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档