2016-11-10 9 views
0

У меня есть вопрос о том, как преодолеть проблему с клавиатурой. Когда я нажимаю определенные клавиши, такие как «вверх» и «вниз», метод keyPressed продолжает активироваться, но когда я нажимаю клавиши типа «w» или «s», метод активируется только один раз, пока я не отпущу и не нажму его снова. Я хотел бы знать, как имитировать повторные нажатия клавиш.Java: только для ввода на клавиатуре Mac только один раз

здесь класс для ввода:

public class Input extends KeyAdapter{ 

    private GameObject p1; 
    private GameObject p2; 

    public Input(Handler handler){ 
     p1 = handler.object.get(0); 
     p2 = handler.object.get(1); 
    } 

    public void keyPressed(KeyEvent e){ 

     System.out.println("thismethodactivated"); 

     int key = e.getKeyCode(); 
     if(key == KeyEvent.VK_W) p1.setVelY(-5); 
     if(key == KeyEvent.VK_S) p1.setVelY(5); 
     if(key == KeyEvent.VK_D) p1.activate(1); 

     if(key == KeyEvent.VK_UP) p2.setVelY(-5); 
     if(key == KeyEvent.VK_DOWN) p2.setVelY(5); 
     if(key == KeyEvent.VK_LEFT) p2.activate(1); 
    } 

    public void keyReleased(KeyEvent e){ 
     int key = e.getKeyCode(); 
     if(key == KeyEvent.VK_W) p1.setVelY(0); 
     if(key == KeyEvent.VK_S) p1.setVelY(0); 

     if(key == KeyEvent.VK_UP) p2.setVelY(0); 
     if(key == KeyEvent.VK_DOWN) p2.setVelY(0); 
    } 
} 

ответ

0

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

Если некоторые кнопки имеют автоматическое повторение событий при нажатии/отпускании, когда пользователь удерживает кнопку, вам потребуется что-то более сложное. Но это выходит за рамки вопроса. Дайте мне знать в комментариях, если вам нужно справиться с этой ситуацией.

+0

Спасибо за помощь, но я понял способ сделать то же самое в другом классе –

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

  • Нет связанных вопросов^_^