У меня есть три класса, которые реализуют класс экрана 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, или просто структура кода, которая также могла бы обойти это. проблема.