java - Lwjgl MouseDwheel 没有得到 0

标签 java opengl input mouse lwjgl

在我的 Opengl 引擎中,我有以下代码来管理鼠标输入内容:

protected static void Mouse(){
        mousex = Mouse.getX();
        mousey = Mouse.getY();
        mouseDx = Mouse.getDX();
        mouseDy = Mouse.getDY();
        mouseWheelState = Mouse.getEventDWheel() / 120;
        while(Mouse.next()){
            int eventButton = Mouse.getEventButton();
            if(Mouse.getEventButtonState()){
                for(MouseListener listener : MouseManager.listener){
                    listener.mousePressed(AGLMouseButton.valueOf(Mouse.getButtonName(Mouse.getEventButton())));
                }
            }
            else if(eventButton > -1){
                for(MouseListener listener : MouseManager.listener)
                listener.mouseReleased(AGLMouseButton.valueOf(Mouse.getButtonName(Mouse.getEventButton())));
            }
        }
    }

我的问题是 mouseWheelState 永远不会为零。如果我向上旋转滚轮,则 mouseWheelState 为 1,直到我向下旋转滚轮。

我该如何解决这个问题?

最佳答案

Mouse.getEventDWheel() 获取鼠标滚轮移动的增量。即使您不触摸方向盘,它也会报告微小的变化。

解决此问题的一个简单方法是使用“死区”,即不接受更改的区域。

mouseWheelState = Mouse.getEventDWheel();

if(Math.abs(mouseWheelState)<deadbandWidth)
{
  mouseWheelState = 0;
}
mouseWheelState /= 120;

关于java - Lwjgl MouseDwheel 没有得到 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25611412/

相关文章:

java - 删除警告(类型安全 : Unchecked cast from capture#2-of ? 将模板扩展为 T)

java - 如何获取 servlet 所在的主机名(带端口)

java - 将部分透明的像素图绘制到纹理(libgdx)

c++ - 在 OpenGL 中设置 MVP 矩阵

css - 如何将 HTML5 范围输入设置为在 slider 前后具有不同的颜色?

python - Input() 阻止 IDE 停止程序

java - 如何在 Java 代码中从 azure-maven-plugin 读取 appSettings 变量?

java - 为 AWS 用户处理 java.net.UnknownHostException 的最佳方法是什么?

c++ - 创建相机以旋转立方体不起作用

css - 向右扫动过渡 css