Java使用Xbox控制器

您建议将我的Xbox 360控制器连接到Java,并能够将键输入作为KeyEvent读入keyPressed事件库。

所以我想要这样的东西

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

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

如果你能为PS3控制器提供好的库,我将非常感激。

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

简单的例子

JXInput网站

有一个名为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 actions() { ControllerState currState = controllers.getState(0); if (!currState.isConnected) { return Collections.emptySet(); } Set 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; } }