JInput несколько контроллеров?

Я немного новичок в jinput и java в целом, и мне было интересно, как проще всего настроить несколько контроллеров xbox 360 (особенно 4) с помощью jinput? В настоящее время я перехожу к учебнику theuzo007 по jinput с контроллерами и продолжаю базовую настройку рабочего контроллера. было бы здорово, если бы я мог установить, какой контроллер перемещает определенные объекты. (Я использую домашнюю библиотеку моего друга, просто чтобы вы знали.)

Скриншот -

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

  • top - это основной блок кода, последний - заголовок (извините за неправильное расположение, иногда это делает imgur!)

если бы кто-нибудь мог мне помочь, это было бы здорово, спасибо!

редактировать: если нет никакого способа сделать это, если бы кто-то мог попытаться рекомендовать мне новую библиотеку, это было бы здорово.

1 ответ

Есть возможный путь
Этот урок довольно хорош. Кроме того, я думаю, что вы можете выполнить 4 действия с контроллерами, скопировав некоторый код в zip-файле, который предоставляет вам theuzo007 и немного больше. Кстати, на той странице, которая вам понравилась, написано, что есть лучшая версия этого учебника, где вы можете скачать и лучшую версию его кода -> учебник JInput от theuzo007 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 много полезных строк!).

Также вы можете создать какой-то механизм для обнаружения отключенных контроллеров и просто подключив их снова, система распознает их. Может быть, есть какой-то идентификатор контроллера, я еще не нашел его.

Наконец, здесь есть больше кода.

Другие вопросы по тегам