Libgdx :phone& #39;кнопка возврата продолжается между экранами

У меня есть три класса, которые реализуют класс экрана LibGdx:

MainMenuScreen, LevelSelectScreen, GameScreen

На данный момент у меня есть параметр setCatchBackKey MainMenuScreen, установленный на значение false, поэтому игра просто выйдет при обратном нажатии.

Для LevelSelectScreen и GameScreen setCatchBackKey имеет значение true.

В функции рендеринга GameScreen у меня есть :

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

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

   ...
}

, которая устанавливает экран для отображения выбора уровня, а в функции рендеринга LevelSelectScreens у меня есть:

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

    Update();
    Draw();
} //end render

Проблема, с которой я сталкиваюсь, заключается в том, что когда я нажимаю назад на GameScreen, экран LevelSelectScreen мигает. на мгновение на экран, а затем обратно в главное меню экрана.

Я полагаю, что мог бы установить некоторую переменную, чтобы проверить, нажимается ли уже Back при инициализации экрана, но мне просто любопытно, есть ли какая-то «волшебная» функция, уже включенная в LibGdx, или просто структура кода, которая также могла бы обойти это. проблема.

5
задан Lestat 18 December 2013 в 00:12
поделиться