8

你会推荐什么库来将我的 Xbox 360 控制器连接到 Java,并且能够将键输入作为 KeyEvent 读取到 keyPressed 事件中。

所以我想要这样的东西

private class KeyInputHandler extends KeyAdapter {
    public void keyPressed(KeyEvent e) {
    }
}

我希望所有的控制器按下都进入 keyPressed。

如果您也可以为 PS3 控制器提供好的库,我将更加感激。

4

2 回答 2

8

有线 XBox 360 控制器将在 Windows 中显示为操纵杆,因此像 JXInput 这样的库将允许您接受来自它的输入。

简单的例子

JXInput 网站

于 2013-06-14T01:42:23.817 回答
2

有一个名为Jamepad的开源项目。下载项目并将其添加到项目的依赖项中。它可以与我的无线 Xbox 360 控制器一起使用。

我用以下输入类型制作了一个游戏:

public enum InputAction {
    MOVE_UP, MOVE_DOWN, MOVE_LEFT, MOVE_RIGHT
}

然后,以下类将处理您的控制器并将输入转换为您自己的内部表示。

public class GamepadInput {
    private final ControllerManager controllers;

    public GamepadInput() {
        controllers = new ControllerManager();
        controllers.initSDLGamepad();
    }

    Set<InputAction> actions() {
        ControllerState currState = controllers.getState(0);
        if (!currState.isConnected) {
            return Collections.emptySet();
        }

        Set<InputAction> actions = new HashSet<>();
        if (currState.dpadLeft) {
            actions.add(InputAction.MOVE_LEFT);
        }
        if (currState.dpadRight) {
            actions.add(InputAction.MOVE_RIGHT);
        }
        if (currState.dpadUp) {
            actions.add(InputAction.MOVE_UP);
        }
        if (currState.dpadDown) {
            actions.add(InputAction.MOVE_DOWN);
        }
        return actions;
    }
}
于 2018-07-14T12:09:26.157 回答