两个keyEvents之后的Java事件

时间:2014-11-10 22:32:35

标签: java game-engine keyevent

我正在编写游戏,需要在fire();

之前执行两个keyEvent

现在我做了这个测试:

if (key == KeyEvent.VK_SPACE) {
    fire();
}

我需要的是:

if (key == KeyEvent.VK_DOWN) && (key == KeyEvent.VK_UP) {
    fire();
}

问题是,他们需要按照这个顺序按下:首先是向下,然后是向上,所以火,但我不知道我该怎么做。

2 个答案:

答案 0 :(得分:2)

跟踪FIFO中最后4个事件的时间和按键,并查看要确定的历史记录

答案 1 :(得分:0)

我认为最好的方法是实现KeyListener(例如here),以便准确识别发生了哪个事件。 例如,您可以使用布尔变量(即readyToFire)来存储是否

 `KeyEvent.VK_UP`

事件产生或不产生火灾。 例如,可能的实现可能是:

    //boolean readyToFire = false;

    public void keyTyped(KeyEvent e) {
         if(e == KeyEvent.VK_UP && readyToFire){
              fire();
         }
    }

    public void keyPressed(KeyEvent e) {
         if(e == KeyEvent.VK_DOWN){
              readyToFire = true;
         }
         else if(e == KeyEvent.VK_UP && readyToFire){
              fire();
         }
    }

    public void keyReleased(KeyEvent e) {
         if(e == KeyEvent.VK_DOWN){
              readyToFire = false;
         }
    }