前提・実現したいこと
javaでゲームを作っています。キャラクターをマウスで移動させ、障害物に当たったら、画面上に「GameOver」のラベルを出力させてタイトル画面に画面遷移させたいです。画面遷移にはPanelChange()というメソッドを作って、パネルを可視化したり、見えなくしたりを切り替えることで実現しています。キャラクター、障害物は画像であり、if文でキャラクター画像と障害物画像が重なったとき、GameOverのラベルをaddし、その後に、PanelChange()メソッドが動作するようなプログラムにしてあります。しかし、実際に実行すると、GameOverラベルが動作する前にPanelChangeが実行され、ラベルが出現する前にタイトル画面に戻ってしまいます。
該当のソースコード
if((charctorY<=brockY)){//画像が重なるとき getContentPane().add(label);//GameOverをaddする PanelChange(); }
試したこと
if((charctorY<=brockY)){//画像が重なるとき getContentPane().add(label);//GameOverをaddする try { Thread.sleep(1000); } catch(InterruptedException error){ error.printStackTrace(); } PanelChange(); }
上記のようにadd後にsleepさせたりもしたのですが結局、時間経過までラベルは出力されず、時間経過後ラベルが出力されないまま、タイトル画面に戻ってしまいました。
また、画面遷移を行わない場合は当たり判定後ちゃんとラベルは出力されます。
ラベル出力して少しの時間(2秒ほど)を空けて、画面遷移を行うにはどうしたらよいのでしょうか。
ソースコードが非常に長く、分かりずらいと思ったため、関係のありそうな部分しか乗せていません。申し訳ありません。回答するうえでご質問がありましたら、なんでもお聞きください。どうぞよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー