【发布时间】:2017-11-22 22:20:12
【问题描述】:
boolean gameContinues = true;
gameWindow.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() >= KeyEvent.VK_LEFT && e.getKeyCode() <= KeyEvent.VK_DOWN) {
directionGoing = e.getKeyCode() - KeyEvent.VK_LEFT;
gameStart = true;
}
}
});
while (gameContinues) {
// for(int i = 0; i < 1000000000; i++) {
// for(int j = 0; j < 1000000000; j++) {
//
// }
// }
if (gameStart) {
start();
gameContinues = false;
}
}
private void start() {
// game operations
System.out.println("started");
}
gameStart是一个全局变量,初始值为false。通常,当我点击左、右、上或下按钮时,gameStart 变量设置为 true,但 if(gameStart) 不起作用。但是当我用注释块放慢速度时, if(gameStart) 运行正常。为什么会这样?
【问题讨论】:
-
在触发 keyListener 和评估该条件之间似乎存在某种竞争条件。
标签: java if-statement keylistener