Java 多个控制器?

Java 多个控制器?,java,controller,xbox,ps3,jinput,Java,Controller,Xbox,Ps3,Jinput,一般来说,我对jinput和java有些陌生,我想知道,用jinput设置多个xbox 360控制器(特别是4个)最简单的方法是什么?目前,我正在使用控制器进行jinput上的UZO007,并且有一个基本的工作控制器设置。如果我能设置控制器移动某些实体的位置,那就太棒了。(我在用我朋友自制的图书馆,你知道的。) 截图- 上面的一个是主要的代码块,最后一个是标题(很抱歉把它们按错误的顺序排列,imgur有时会这样做!) 如果有人能帮我,那太好了,谢谢 编辑:如果没有可能的方法,如果有人可以尝

一般来说,我对jinput和java有些陌生,我想知道,用jinput设置多个xbox 360控制器(特别是4个)最简单的方法是什么?目前,我正在使用控制器进行jinput上的UZO007,并且有一个基本的工作控制器设置。如果我能设置控制器移动某些实体的位置,那就太棒了。(我在用我朋友自制的图书馆,你知道的。)

截图-

  • 上面的一个是主要的代码块,最后一个是标题(很抱歉把它们按错误的顺序排列,imgur有时会这样做!)
如果有人能帮我,那太好了,谢谢


编辑:如果没有可能的方法,如果有人可以尝试向我重新发送一个新库,那就太酷了。

有一种可能的方法。
那个教程很好。此外,我认为您可以通过在zip中复制粘贴一些代码来完成4个控制器的工作,theuzo007为您提供了更多功能。顺便说一句,你喜欢的那个页面说有一个更好的教程版本,你可以下载他的代码的更好版本->

下载代码后,您可以看到在JoystickTest.java中有一个名为searchForControllers()的方法,您可以将该方法(与相应的
private ArrayList foundControllers;
as字段一起)放入一个名为
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);
}
公共类控制器检查器{
私有静态ArrayList foundControllers=null;
/**
*仅用于检查所有可用的控制器。
*/
私有静态void searchForControllers(){
控制器[]控制器=ControllerEnvironment.getDefaultEnvironment().getControllers();
对于(int i=0;i
}

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

我希望这对你的目标有所帮助。这个解决方案只是检查所有可用的控制器,然后按找到它们的最后顺序返回(也许使用堆栈更有效)。但是你可能需要更多的功能,比如通过按下一个按钮来告诉程序选择一个特定的控制器,或者在一个屏幕上显示“请,连接你的控制器并按下任何键/按钮”。如果您理解UZO007的代码(JoystickTest.java有很多有用的行!),那么这很容易实现

此外,您还可以制作一些机制来检测未拔出的控制器,只需再次插入控制器,系统即可识别它。可能有控制器id,我还没找到

最后,还有更多的代码