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 回答
1

一个解决方案是

  1. project.properties 文件修改

    目标=android-14

  2. AndroidManifest.xml 文件修改

    android:configChanges="keyboard|keyboardHidden|orientation|screenSize"

    在 android:configChanges 添加 screenSize

于 2013-08-24T07:51:38.037 回答
0

您正在使用static变量来跟踪需要在应用程序恢复时重新加载的状态。由于 Android 生命周期的工作方式,“静态”变量引用将(通常但不总是)在简历中保持有效,但实际的 Android“活动”将被销毁。您应该重新创建简历上的所有资源。(在你的情况下,我认为你没有创建它们,但你应该,然后你使用它们,它们指的是旧的,现在死的 Activity 的陈旧状态。)

有关说明,请参阅Android 静态对象生命周期

简短的回答是,对于 libGDX,除非您完全确定自己在做什么,否则不要使用static变量来跟踪应用程序状态,始终(重新)在create方法中创建您的状态。

于 2013-02-04T04:42:12.633 回答