Выход Gdx, закрывающий все приложение - как закрыть только кадр gdx?

У меня есть редактор игр, в котором есть возможность запускать редактируемую игру в отдельном окне (но в пределах той же ВМ). Однако, когда игра закрыта, я хотел бы закрыть ее окно gdx, не сбивая все приложение (то есть редактор).

В настоящее время я использую следующий код внутри JFrame, в котором размещен LwjglApplication:

public void windowClosing(WindowEvent e) {
    System.err.println("Now closing app...");
    Gdx.app.exit();
    System.err.println("App now closed.");
}

Это напечатает прощание, закроет окно GDX и продолжит завершение работы моей виртуальной машины. Какие-либо предложения?


person tucuxi    schedule 06.11.2012    source источник


Ответы (1)


На рабочем столе (бэкэнд lwjgl) Gdx.app.exit() публикует Runnable, который вызывает завершение цикла mainLoop и выпадение управления из нижней части этой функции (см. источник). mainLoop заканчивается:

if (graphics.config.forceExit) System.exit(-1);

graphics.config — это LwjglApplicationConfiguration объект, переданный в LwjglApplication конструктор. Так что просто установите

config.exit = false

в объекте конфигурации (вам может потребоваться создать его и использовать другой конструктор, если вы в настоящее время не создаете объект конфигурации). Есть и другие полезные вещи, которые вы можете установить в объекте конфигурации.

(Это код из GIT, поэтому в более старой версии GDX или других бэкэндах все может быть по-другому.)

person P.T.    schedule 07.11.2012