2016-11-22 4 views
0

Я пытаюсь создать простую тестовую программу, чтобы познакомиться с библиотекой JInput для другого проекта. Я проверил свой контроллер со всеми предоставленными тестовыми классами и работает так, как ожидалось. Однако, когда я пытаюсь опросить контроллер, все значения остаются неизменными независимо от моего ввода. Вот код, я работаю с:Данные опроса Jinput никогда не меняются

public class ControllerTest {

public static void main(String[] args){ 
    //System.out.println("Hello World"); 

    Controller[] ca = ControllerEnvironment.getDefaultEnvironment().getControllers(); 
    Controller gamepad = null; 
    Component[] components = null; 
    EventQueue eventQueue; 
    // Run through the list of available input devices and get the gamepad 
    for(int i = 0; i < ca.length; i ++){ 
     if(ca[i].getType().equals(Controller.Type.GAMEPAD)){ 
      gamepad = ca[i]; 
     } 
    } 
    // Print the name of the controller and its type 
    if(gamepad != null){ 
     System.out.println(gamepad.getName() + ": " + gamepad.getType()); 
     components = gamepad.getComponents(); 
     System.out.println("\tComponents:"); 
     for(int i = 0; i < components.length; i ++){ 
      System.out.println("\t\tComponent #" + i + ": " + components[i].getName() + "\n\t\t\tIs Relative: " 
        + components[i].isRelative()); 
     } 
    } 
    else{ 
     System.out.println("No gamepad connected"); 
    } 

    while (true){ 
     // If we have no gamepad connected, exit 
     if(gamepad == null){ 
      System.out.println("No Gamepad detected, exiting..."); 
      System.exit(0); 
     } 
     // Poll controller 
     gamepad.poll(); 
     Component[] comp = gamepad.getComponents(); 

     for(int i = 0; i < comp.length; i ++){ 
      StringBuffer buffer = new StringBuffer(); 
      buffer.append(comp[i].getName()); 
      buffer.append(", Value: " + comp[i].getPollData()); 
      System.out.println(buffer.toString()); 
     } 
     try{ 
      Thread.sleep(20); // Sleep before polling again 
     } 
     catch(InterruptedException e){ 
      e.printStackTrace(); 
     } 
    } 
} 

}

Я пытался найти ответ в Интернете, но эта библиотека не очень хорошо документирована и, кажется, как правило, завернутыми в других библиотеках, специфичных для создания игр. (Вышеуказанный проект роботизированный в природе)

ответ

0

Вы должны использовать EventQueue

player.poll(); 
     EventQueue queue = player.getEventQueue(); 
     Event event = new Event(); 
     while (queue.getNextEvent(event)) { 
      Component comp = event.getComponent(); 
      if (comp.getIdentifier() == Component.Identifier.Button._6){ 
       if (comp.getPollData() == 1){ 
        example 
       } 
+0

Так что я попытался реализациями этой версии опроса контроллера, но, к сожалению, сейчас не печатает ничего. Кажется, есть странное разъединение где-то в коде, так как тестовые классы, поставляемые с библиотекой, работают с моим контроллером. – daemor