【问题标题】:Java event after two keyEvents两个 keyEvents 之后的 Java 事件
【发布时间】:2014-11-10 22:32:34
【问题描述】:

我正在编写一个游戏,需要在fire()之前执行两个keyEvent;

现在我已经做了这个来测试:

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

我需要的是:

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

问题是,它们需要按以下顺序按下:先向下,然后向上,然后开火,但我不知道该怎么做。

【问题讨论】:

  • 维护一系列指示按下了哪些键的标志。我还建议在 KeyListener 上使用键绑定 API,有关详细信息,请参阅 How to Use Key Bindings

标签: java game-engine keyevent


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我认为最好的方法是实现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; } }

    【讨论】:

      猜你喜欢
      • 2016-03-27
      • 2011-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多