2016-11-22 41 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