我正在编写游戏,需要在fire();
之前执行两个keyEvent现在我做了这个测试:
if (key == KeyEvent.VK_SPACE) {
fire();
}
我需要的是:
if (key == KeyEvent.VK_DOWN) && (key == KeyEvent.VK_UP) {
fire();
}
问题是,他们需要按照这个顺序按下:首先是向下,然后是向上,所以火,但我不知道我该怎么做。
答案 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;
}
}