小编典典

Jinput-获取鼠标位置

java

我正在尝试使用Jinput打印出鼠标位置:

public static void main(String[] args) {
    input = new InputManager();

    while (true) {
        for (Mouse mouse : input.getMice()) {
            mouse.poll();
            System.out.println("Mouse X: " + mouse.getX().getPollData());
            System.out.println("Mouse Y: " + mouse.getY().getPollData());
            System.out.println("---------");
        }
        try {
            Thread.sleep(100);
        } catch (Exception e) {
            // DO NOTHING < BAD
        }
    }
}

这是我的InputManager,它在初始化时扫描所有输入设备,并将所有鼠标分离到单独的列表中:

public class InputManager {
    public ArrayList<Mouse> mice;

    public InputManager() {
        mice = new ArrayList<Mouse>();
        Controller[] inputs = ControllerEnvironment.getDefaultEnvironment()
            .getControllers();
        for (int i = 0; i < inputs.length; i++) {
            Mouse mouse;
            if (inputs[i].getType() == Controller.Type.MOUSE) {
                mouse = (Mouse) inputs[i];
                mice.add(mouse);
            }
        }
        System.out.println("Discovered " + mice.size() + " mice.");
    }

    public ArrayList<Mouse> getMice() {
        return mice;
    }
}

x和y的打印信息始终为0。我在Windows 10上运行此程序,是否会引起任何问题?如何使用Jinput从鼠标获取鼠标数据?


阅读 287

收藏
2020-11-30

共1个答案

小编典典

JInput处于较低级别,您正在混淆窗口指针和鼠标。鼠标只是相对轴>
2的设备。每次轮询后或在每个事件中的值都不是像素数或位置,它仅是从其先前值开始的大致抽象单位的偏移量。对于相同的物理距离更改,某些鼠标报告较大的值,因此必须缩放它,这就是使用DirectX鼠标(也是相对轴设备)的游戏具有鼠标缩放滑块的原因。

2020-11-30