私は空き時間に小さなゲームを開発していますが、なぜそれが起こったのかよくわからない問題に遭遇しました。
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 メソッドに依存していました。ブール値が変更されたため、すべてが意図したとおりに機能することがわかりました。しかし、そのボタンをクリックした後、どういうわけか私のゲームループは再開しません