2015-10-12 2 views
1

Я пытаюсь напечатать положения мыши с помощью Jinput:Jinput - Получить мышь Место

public static void main(String[] args) { 
    input = new InputManager(); 

    while (true) { 
     for (Mouse mouse : input.getMice()) { 
      mouse.poll(); 
      System.out.println("Mouse X: " + mouse.getX().getPollData()); 
      System.out.println("Mouse Y: " + mouse.getY().getPollData()); 
      System.out.println("---------"); 
     } 
     try { 
      Thread.sleep(100); 
     } catch (Exception e) { 
      // DO NOTHING < BAD 
     } 
    } 
} 

Вот мой InputManager, который при инициализации сканирования для всех устройств ввода и разделяет всех мышей в отдельный список:

public class InputManager { 
    public ArrayList<Mouse> mice; 

    public InputManager() { 
     mice = new ArrayList<Mouse>(); 
     Controller[] inputs = ControllerEnvironment.getDefaultEnvironment() 
      .getControllers(); 
     for (int i = 0; i < inputs.length; i++) { 
      Mouse mouse; 
      if (inputs[i].getType() == Controller.Type.MOUSE) { 
       mouse = (Mouse) inputs[i]; 
       mice.add(mouse); 
      } 
     } 
     System.out.println("Discovered " + mice.size() + " mice."); 
    } 

    public ArrayList<Mouse> getMice() { 
     return mice; 
    } 
} 

Информация, которая печатается, всегда равна 0 для x и y. Я запускаю это в Windows 10, это вызывает какие-либо проблемы? Как получить данные мыши от мыши с помощью Jinput?

ответ

1

JInput - нижний уровень, вы вводите в заблуждение указатель на окно и мышь. Мышь - это просто устройство с> 2 относительной осью. Значения после каждого опроса или в каждом событии не являются числом пикселей или позицией, это просто смещение в грубо абстрактных единицах из предыдущего значения. Некоторые мыши сообщают о больших значениях для того же размера физического расстояния, поэтому вам нужно масштабировать его, поэтому игры, в которых используется мышь directx (также устройство с относительной осью), имеют слайдер масштаба мыши.

Смежные вопросы