1

我正在使用一个 xbox one 控制器(有线),我正在尝试使用输入从中读取值。我可以看到该设备,但是当我尝试获取它的值时,它不会读取任何内容。

public class Main {

public static void main(String[] args) {
    Controller[] controllers = ControllerEnvironment.getDefaultEnvironment().getControllers();
    Controller controller = null;

    for (int i = 0; i < controllers.length; i++) {
        if (controllers[i].getType() == Controller.Type.GAMEPAD){
            System.out.println("found");//this prints when the device is found (which it is)
            controller = controllers[i];
        }
    }

    Event event;
    Component component;
    float value;
    String tempPosition = "";

    while(true){
        controller.poll();
        EventQueue eq = controller.getEventQueue();
        event = new Event();
        System.out.println(event.getComponent());// this prints null the entire time
    }
}

}

4

1 回答 1

0

我进行了一些测试,据我所知,您无法让 jinput 无头运行。你需要一个 JFrame。我什至在这里尝试了他们的示例代码。正如此评论所提到的,如果应用程序是无头的,则可能不会触发 directx 事件。

原评论

在此处使用此示例代码。

ReadAllEvents.java

将此添加到 ReadAllEvents 的 main 方法中 new ReadAllEvents();

JFrame window = new JFrame();
window.setResizable(false);
window.setLocationRelativeTo(null);
window.setVisible(true);

我试图让你的代码工作,但不幸的是,我对 jinput 的理解不够好,无法找出确切的问题,但我想如果你调试这个工作示例,你很快就会弄清楚。

于 2022-02-26T08:11:07.287 回答