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);

    ...
}

これは実際には機能しないコードです。3 つのボタンを持つ JFrame です (他の 2 つを切り取りました)。キー「p」が押されたときの「ポップアップ」である一時停止メニューであるはずです。それは非常にうまく機能します、問題は

GamePanel.var.setPause(false);

この行はブール値を false に設定する必要があり、これによりゲーム ループが続行されます。しかし、何らかの理由で実行されず、ブール値は true のままです。この問題は、メイン ゲーム ウィンドウを 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 に答える