2

ゲームのウェルカム画面をペイントしようとしていますが、ゲームが読み込まれたときのみです。ゲーム中に毎回塗り直したくありません。

だから私はこれをしました(isStartはtrueとしてインスタンス化されます):

public myClass(String name){
    setSize(800, 800);
    setVisible(true);
    setResizable(false);
    runGame()
}

public void paint(Graphics g) {
    if(nowStarting)
        g.drawImage(WelcomeGameScreen, 0, 0, null);
    isStart = false;
}

問題は、画像が1秒間ポップアップしてから消えることです。奇妙なことに、ifステートメント/isStart条件を省略した場合に機能します。これの何が問題になっていますか?

4

3 に答える 3

1

コードを逐語的にコピーしておらず、上記のコードにエラーがあると思います。あなたのコードが私が思うものなら...

public void paint(Graphics g) {
    if(isStart)
        g.drawImage(WelcomeGameScreen, 0, 0, null);
    isStart = false;
}

次に、開始時にスプラッシュ画面を描画します。ただし、isStartをfalseに設定しているため、次にペイントが呼び出されたときに、画像は描画されなくなります。ペイントメソッドは、OSが画面を更新する必要があることを通知するたびに(および再ペイントで強制するときに)呼び出されます。

これを回避する方法は、ゲームの読み込みが完了したときにアプリケーションでisStartをfalseに設定してから、repaintを呼び出すことです。

于 2010-09-24T10:18:31.200 に答える
0

パネルがペイントされるとすぐにnewStartingブール値がに変更されると思います。false

于 2010-09-24T09:55:09.250 に答える
0

それがすぐに消える理由は、Swingフレームワークによってトリガーされる再ペイントのためです。さらに、オーバーライドされたpaint()メソッド内にウェルカム画面のコードを記述しました。

スプラッシュウィンドウを起動する方法の詳細な説明については、このリンクを参照してください。Java1.6にはSplashScreenクラスもあります

于 2010-09-24T09:59:44.190 に答える