1

我在空闲时间开发一个小游戏,但我遇到了一个我不太明白为什么会发生的问题。

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 方法向我提供有关布尔值的信息。我现在发现布尔值已更改,因此一切都按预期工作。但是在我单击该按钮后,不知何故我的游戏循环没有恢复

4

1 回答 1

0

那应该可以正常工作,我怀疑这里有些混乱。

如果你在actionPerformed()方法中放置一个断点(或者只是在System.out.println()其中放置一个语句)怎么办?是否达到/执行?

祝项目好运,看起来很有趣!

于 2012-09-17T18:52:22.867 回答