2015-04-26 3 views
4

Я создал класс, который принимает ввод клавиатуры lwjgl и превращает его в список строк, которые являются всеми клавишами, которые в данный момент нажаты.Java lwjgl handler

public class KeyHandler { 

    ArrayList<String> keysPressed; 

    public KeyHandler() { 
     keysPressed = new ArrayList<String>(); 
    } 

    public void checkKeys() { 
     while (Keyboard.next()) { 
      String keystring = Keyboard.getKeyName(Keyboard.getEventKey()); 
      if (!keysPressed.contains(keystring)) { 
       keysPressed.add(keystring); // key has been pressed 
      } else { 
       keysPressed.remove(keystring); // key has been released 
      } 
     } 
    } 

    public void runKeys() { 
    if (keysPressed.size() > 0) { 
     for (String str : keysPressed) { 
      System.out.println("Key handler got key:" + str); 
      // run class for key 
     } 
    } else { 
     // no keys have been pressed 
    } 
} 

} 

Я пытаюсь выяснить способ, так что «runKeys» будет работать класс с таким именем, например.

W.java

public class W { 

    public static void exc() { 
     player.moveZ(10); 
    } 

} 

Причиной этого является, чтобы избежать необходимости проходить через 50+, если заявления для проверки ввода

ответ

2
  • Создать Map<Character, Consumer<Character>>.
  • Создайте класс для каждого символа, который реализует интерфейс Consumer<Character>.
  • Храните объекты этих классов на карте.
  • Звоните на соответствующий потребительский объект с карты, используя ваш обнаруженный символ нажатия клавиши.

Надеюсь, это поможет.

+0

Немного неудобно настраивает каждый ключ, но он действительно работает, спасибо :) – Ctrl

+1

Рад знать, что это помогло. Удачи. –