2016-11-10 20 views
0

我的问题是关于如何克服键盘问题。当按下'up'和'down'等特定键时,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

感谢您的帮助,但我想出了一种方法来在另一个班级做同样的事情 –