在我正在制作的游戏中,我刚创建了一个起始屏幕。该起始屏幕有4 JButton
个播放,选项,信用和退出。如果按Play,将出现另一个JButton,New Game。
我不想这样做,以便当你按下新游戏按钮时,开始画面消失并且游戏开始(实际游戏和盯着屏幕延伸JComponent
)。
我有一个单独的课程来运行游戏并且在游戏中选项菜单。
在起始屏幕类中,我有一个名为startGame的boolean
,默认情况下该布尔值等于false,当您按下New Game按钮时,它将等于true。在开始菜单类中,我还有一个返回startGame值的公共方法,它看起来像这样。
public boolean checkGame(){
return startGame;
}
在运行游戏的主类中,我使用这样的计时器检查checkGame方法是否等于true或false。
if(menu.checkGame() == false){
frame.add(menu);
}
Timer timer = new Timer(5, new ActionListener(){
public void actionPerformed(ActionEvent e){
if(menu.checkGame() == true){
frame.remove(menu);
frame.add(new Level1());
}
}
});
timer.start();
显然这不起作用,因为如果它我不会问这个问题。那么现在我的问题是,我将如何让它像我想要的那样工作?
答案 0 :(得分:0)
在您的第二个代码段中,Timer
仅运行一次任务。也许您希望ScheduledExecutorService
重复检查,例如:
final ScheduledExecutorService scheduledExecutor =
Executors.newSingleThreadScheduledExecutor();
scheduledExecutor.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
if (menu.checkGame()) {
frame.remove(menu);
frame.add(new Level1());
scheduledExecutor.shutdown();
}
}
});
}
}, 5, 5, TimeUnit.MILLISECONDS);