【问题标题】: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();
}
问题是,它们需要按以下顺序按下:先向下,然后向上,然后开火,但我不知道该怎么做。
【问题讨论】:
标签:
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;
}
}