1

libgdxフォーラムでこのスレッドを見つけましたが、同じ問題があります…</ p>

私はlibGDxを使用し、2012年8月にゲームを作成しました。このゲームでは、電話のスタンバイボタンを押して(画面がオフになり)、もう一度押すと、画面は押す前と同じになります。スタンバイボタン。コードでは何も書いていませんでしたが、今度は別のゲームを作成し(スプラッシュ画面のassetsManagerを使用してリソースをアップロードします)、電話のスタンバイボタンを押してからもう一度押します。ゲームが再開します!だから私は再びスプラッシュスクリーンを見る

私はこのようなものを使用しました:

@Override
public void resume()
{
    super.resume();
    this.setScreen(mainMenuScreen);
}

しかし、動作しません。

解決策はありますか?どうもありがとう!!

PS:これはゲームクラス全体です。

public static Screen gameScreen;
public static Screen mainMenuScreen;
public static Screen chooseTimeScreen;
public static Screen creditsScreen;
public static AssetManager manager = new AssetManager();;
public static SpriteBatch batcher;
boolean create = false;


@Override
public void create()
{

    Gdx.app.log("----------------", manager + "");

    if (manager == null)
    {
        manager = new AssetManager();
        batcher = new SpriteBatch();
        setScreen(new SplashScreen(this, manager));
    }
    else
    {
        batcher = new SpriteBatch();
        setScreen(mainMenuScreen);
    }

}


@Override
public void dispose()
{
    super.dispose();
    manager.dispose();
    batcher.dispose();

    if(gameScreen != null) gameScreen.dispose();
    if(mainMenuScreen != null) mainMenuScreen.dispose();
    if(chooseTimeScreen != null) chooseTimeScreen.dispose();
    if(creditsScreen != null) creditsScreen.dispose();
}
4

3 に答える 3

1

メソッドで何をしているのかも確認してくださいonCreate。これは、画面がスリープから復帰したときに呼び出されることがあります。スプラッシュ スクリーンを再作成するか、ここでリセットすると、問題が発生します。

また、あなたのコードはresume()そうではないはずですonResume()

でアセットマネージャーを再作成しonCreateないようにするには、次のようにします。

if(manager == null)
    manager = new AssetManager();
于 2013-02-02T12:59:43.227 に答える
0

変数を使用しstaticて、アプリケーションの再開時に再ロードする必要がある状態を追跡しています。Androidのライフサイクルの仕組みにより、「静的」変数参照は(常にではありませんが)履歴書全体で有効なままですが、実際のAndroidの「アクティビティ」は破棄されます。再開時にすべてのリソースを再作成する必要があります。(あなたの場合、あなたはそれらを作成していないと思いますが、そうすべきです、そしてあなたはそれらを使用します、そしてそれらは古い、今は死んでいる活動からの古い状態を参照します。)

説明については、 Android静的オブジェクトのライフサイクルを参照してください。

簡単に言うと、libGDXでは、実行していることを完全に確信していない限り、アプリケーションの状態を追跡するために変数を使用せstatic、常にメソッドで状態を(再)作成しますcreate

于 2013-02-04T04:42:12.633 に答える