Libgdx:手机的后退按钮在屏幕之间继续

Fle*_*eck 5 java input libgdx

我有三个实现LibGdx Screen类的类:

MainMenuScreen,LevelSelectScreen,GameScreen

现在我将MainMenuScreen的setCatchBackKey设置为false,因此游戏将在退出时退出.

LevelSelectScreen和GameScreen将setCatchBackKey设置为true.

在GameScreen的渲染功能中,我有:

@Override
public void render(float delta)
{
    gameTime = delta;

    if (Gdx.input.isKeyPressed(Keys.BACK))
       new LevelSelectScreen(game);

    ...
}
Run Code Online (Sandbox Code Playgroud)

它将屏幕设置为显示级别选择,并且在LevelSelectScreens的渲染功能中我有:

@Override
public void render(float delta)
{
    if (Gdx.input.isKeyPressed(Keys.BACK))
        new MainMenuScreen(game);

    Update();
    Draw();
} //end render
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,当我按回GameScreen时,LevelSelectScreen闪烁到屏幕一会儿,然后直接回到MainMenuScreen.

我想我可以设置一些变量来检查在屏幕初始化时是否已经按下了Back,但是如果LibGdx中已经包含一些"魔法"函数或只是代码结构也可以解决这个问题,这只是好奇.

Ali*_*aaa 1

我使用一个 Activity 类来为我拥有的每个屏幕扩展“AndroidApplication”类,例如 LevelSelectActivity、MainMenuActivity 和 GameActivity。在每个类中都有一个“Screen”扩展类对象,就像您拥有的类一样,对暂停、恢复和按后退键等事件的控制是 Activity 类的职责,而不是屏幕类的职责。当需要返回时,只需调用 GameActivity 类中的“finish()”方法即可。它会自动转到 SelectLevelActivity。