2015-05-28 6 views
0

Я делаю два экрана A и B. Предположим, что они являются screenA & screenB.LibGDX - Есть ли разница между использованием «Back ImageButton» и «Keys.BACK»?

В screenA, я использую setScreen (screenB) для передачи экрана A на экран B.

В screenB у меня есть два метода, которые два передают экран B обратно на экран A.

Метод 1

Я создаю IMAGEBUTTON под названием "Назад". Когда я нажимаю IMAGEBUTTON, он будет использование setScreen (screenA), чтобы передать screenB обратно к экрану А.

Метод 2

Я использую мягкую клавишу Keys.BACK передать screenB обратно screenA.

Мой вопрос s являются:

1) Является ли method1 такой же, как method2?

2) Является ли моя концепция ниже правильной?

Способ1 Стек: screenA -> экранB сверху -> другой ScreenA сверху.

Mehod2 Stack: A -> screenB сверху, затем экранB удаляется (если нажата клавиша.BACK) и обратно на A.

Если моя концепция верна, будет ли метод1 использовать больше памяти, чем Method2?

Надеюсь, вы сможете понять мой вопрос и извините за любые неприятности.

Спасибо за ответ.

ответ

2

У меня есть убеждение, что setScreen() не делает то, что вы думаете. setScreen() не управляет никаким стеком. Когда вы устанавливаете Экран, предыдущий экран просто удаляется и заменяется новым, добавленным вами.

Предположим, вы сделали setScreen (ScreenA), затем из ScreenA вы делаете setScreen (ScreenB) -> ScreenA удаляется и заменяется ScreenB. Если вы хотите иметь стек, вы можете сделать свой собственный. Обычно я использую Список и добавляю каждый Экран сверху и когда нажимается назад, я вывожу его из списка, и я setScreen() последний Экран списка.

На клавише Key.Back или Back у вас будет такая же логика.

И обычно вы хотели бы использовать эту линию, чтобы манипулировать обратным ключом своей логикой.

Gdx.input.setCatchBackKey(true); 
0

LIBGDX предоставляет вам способ захватить кнопку, и есть возможность установить ее обратно на экран или просто остановить нажатие кнопки, захватив ее, но не установив экран. Это хорошая практика, потому что, если пользователь нажимает программную клавишу по ошибке? вы должны это проверить. Другим способом, обеспечивающим обратную кнопку на экране, является то, что вы хотите в соответствии с вашим проектом и удобством для пользователя. Ни один из методов не является потребляемой памятью. его нормальный поток приложения.