我在空闲时间开发一个小游戏,但我遇到了一个我不太明白为什么会发生的问题。
public class PauseMenu extends JFrame {
...
/**
* Create the frame.
*/
public PauseMenu() {
...
JButton btnContinue = new JButton("Continue");
btnContinue.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
GamePanel.var.setPause(false);
dispose();
}
});
contentPane.add(btnContinue);
...
}
这是实际上不起作用的代码。它是一个带有三个按钮的 JFrame(我剪掉了另外两个)。它应该是一个暂停菜单,按下“p”键时的“弹出”菜单。效果很好,问题是
GamePanel.var.setPause(false);
这条线应该设置一个布尔值 false,然后继续我的游戏循环。但由于某些原因,它永远不会执行,布尔值保持为真。此问题仅在我将主游戏窗口从 JPanel 更改为 JFrame 后发生,因此我可以显示其他 jframe。我链接它们是因为它们很长:
这是 JPanel 的旧代码。该按钮使用此代码。
https://github.com/westerwave/dogfight_remake/blob/master/main/Dogfight.java
这是当前代码(JPanel)
https://github.com/westerwave/dogfight_remake/blob/master/main/GamePanel.java
(JFrame)
public static GameFrame frame;
public GamePanel game;
public GameFrame() {
setUndecorated(true);
setResizable(false);
setTitle("Dogfight-Frame");
setSize(dim);
setVisible(true);
game = new GamePanel();
getContentPane().add(game);
frame = this;
}
我希望我对这个问题说清楚了,希望你能帮助我。
编辑:我犯了一个错误,并依靠我的paintComponent 方法向我提供有关布尔值的信息。我现在发现布尔值已更改,因此一切都按预期工作。但是在我单击该按钮后,不知何故我的游戏循环没有恢复