【问题标题】:switch boolean to false or true with the same button [closed]使用相同的按钮将布尔值切换为 false 或 true [关闭]
【发布时间】:2014-06-08 11:53:10
【问题描述】:

当我按下同一个鼠标按钮时,我正在尝试在真假之间进行boolean 切换。

这是我写的代码:

if (Mouse.isButtonDown(0)){
            Mouse.setGrabbed(true);
        } else if(Mouse.isButtonDown(0)){
            Mouse.setGrabbed(false);
        }
       if(Mouse.isGrabbed()){
           camera.processMouse(1, 80, -80);
       }

这不起作用,我第二次按下鼠标按钮时它没有反应。

【问题讨论】:

  • 为什么您的ifelse if 条件相同?控制将如何到达else if 子句?
  • 在我第二次按下鼠标按钮时,我绝望地试图让它变为假。抱歉,我并没有声称自己是这方面的专家,这就是我咨询你们的原因:)
  • @user3677855-请检查我在下面发布的答案。如果有任何错误,请告诉我。
  • 思考您正在编码的内容很重要。简单地复制一些代码并调整一些东西并不是这样做的。从头开始,仔细考虑每一步。 (StackOverflow 不是“为我编写代码”网站。)
  • 我不认为它是热舔!但我认为在研究代码之前确保代码正常工作很重要.....我已经收到 4 个回复,但没有一个按我的意图工作,因此我发现努力研究他们的代码非常愚蠢。我向你们保证,当找到解决方案时,我会非常仔细地研究它,这样我就不必再问你们这个问题了。如果我的学习方法冒犯了你,我很抱歉,虽然我看不出它们有什么问题。

标签: java eclipse lwjgl


【解决方案1】:

您可以尝试以下方法:

if (Mouse.isButtonDown(0)){
        Mouse.setGrabbed( !Mouse.isGrabbed() );
    } 
   if(Mouse.isGrabbed()){
       camera.processMouse(1, 80, -80);
   }

“!”符号反转给定的真/假值,因此 !true 给出 false 并且 !false 给出 true。

【讨论】:

  • 我们已经非常接近了!但它只会在我按下按钮时做出反应。所以我最终会随机推送 1-10 次,然后它才会对我的推送做出反应。
  • 每次按下按钮时,您的程序是否都能访问代码?您可以通过设置断点或打印“按钮按下”之类的内容来测试它
  • 好吧,这里有东西。我尝试向其中添加 System.out.println,有几次我尝试推动鼠标,每次推动它打印 4-7 次。
  • 鼠标已导入。导入 org.lwjgl.input.Mouse;我不知道这是否有帮助。我必须承认自己迷路了。
  • 好吧,我自己从未使用过 LWJGL,所以恐怕我无法帮助你。但是,它确实给出了为什么您的按钮不稳定的答案。你随机翻转“抓取”值,所以你得到随机结果。
【解决方案2】:

稍加修改

   if (Mouse.isButtonDown(0)){
        Mouse.setGrabbed(true);
    } else{
        Mouse.setGrabbed(false);
    }
   if(Mouse.isGrabbed()){
       camera.processMouse(1, 80, -80);
   }

【讨论】:

  • 我试过这个。当我按下按钮时它根本没有反应。当我使用此代码时,好像 setGrabbed 一直为假,这没关系,但当我按下按钮或按住它时它不会变为真。
  • 你的回答不符合他的目的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-18
  • 1970-01-01
  • 2011-04-27
  • 1970-01-01
  • 2019-03-24
相关资源
最近更新 更多