JInput多控制器?

时间:2014-01-15 06:39:24

标签: java controller xbox ps3 jinput

我对jinput和java有点新,并且想知道,使用jinput设置多个xbox 360控制器(特别是4)的最简单方法是什么?目前,我正在使用控制器关闭jinput的theuzo007 tutorial,并且正在进行基本的工作控制器设置。如果我可以设置控制器移动某些实体,那将是太棒了。 (我正在使用我朋友的自制图书馆,所以你知道。)

屏幕截图 -

http://imgur.com/a/1Ocu5

  • 顶部的一个是主要的代码块,最后一个是标题(抱歉将它们放错了顺序,有时候imgur会这样做!)

如果有人能帮助我,那就太好了,谢谢!

编辑:如果没有可能的办法,如果有人可以尝试向我推荐一个新图书馆,那就太酷了。

1 个答案:

答案 0 :(得分:1)

有一种可能的方式
该教程非常好。此外,我认为你可以通过复制粘贴zip中的一些代码来完成4个控制器的东西.uzo007为你提供了更多。顺便说一下,你喜欢的页面说有一个更好的教程版本,你可以下载更好的代码版本 - > theuzo007's JInput tutorial V2

下载代码后,您可以看到在JoystickTest.java中有一个名为searchForControllers()的方法,您可以在名为private ArrayList<Controller> foundControllers;的类中放置(使用相应的ControllerChecker字段)或一些凉爽的名字。让它们全部静止,你会得到这样的东西:

public class ControllerChecker {

private static ArrayList<Controller> foundControllers = null;

/**
*   Just used for checking all available controllers.
*/
private static void searchForControllers() {
    Controller[] controllers = ControllerEnvironment.getDefaultEnvironment().getControllers();

    for(int i = 0; i < controllers.length; i++){
        Controller controller = controllers[i];

        if (
                controller.getType() == Controller.Type.STICK || 
                controller.getType() == Controller.Type.GAMEPAD || 
                controller.getType() == Controller.Type.WHEEL ||
                controller.getType() == Controller.Type.FINGERSTICK
           )
        {
            // Add new controller to the list of all controllers.
            foundControllers.add(controller);

            // Add new controller to the list on the window.
            window.addControllerName(controller.getName() + " - " + controller.getType().toString() + " type");
        }
    }
}

/**
*   Returns null if there is no controller available. Otherwise, it retrieves the last controller in the list by removing it.
*/
public static Controller getController() {

    if(foundControllers == null) {
        foundControllers = new ArrayList<Controller>();
        searchForControllers();
    }

    return foundControllers.size() == 0 ? null : foundControllers.remove(foundControllers.size() - 1);
}

}

您将使用静态方法getController()使玩家拥有不同的控制器,检查返回的控制器是否为空,这意味着没有可用的控制器。此外,您可以在每次要求时更改我的代码并检查控制器,但您必须检查控制器是否已在使用中。

我希望这可以帮助你达到目的。此解决方案只检查所有可用的控制器,然后以它找到的最后一个顺序返回(可能使用堆栈更有效)。但是,您可能需要更多功能,例如能够通过按下按钮告诉程序选择特定控制器,可能在屏幕上显示“请,连接控制器并按任意键/按钮”。如果您了解theuzo007的代码(JoystickTest.java有很多有用的行!),这可以轻松实现。

此外,您可以制作一些机制来检测未插入的控制器,只需再次插入它们,系统就可以识别它。也许有一些控制器ID,我还没有找到它。

最后,还有更多代码here