LibGDX - 使用 "Back ImageButton" 和 "Keys.BACK" 有什么区别吗?

LibGDX - Is there any difference between using "Back ImageButton" & "Keys.BACK"?

我正在制作两个屏幕 A 和 B。假设它们是屏幕 A 和屏幕 B。

在 screenA 中,我使用 setScreen(screenB) 将 screenA 传递给 screenB。

在 screenB 中,我有两种方法将 screenB 传回 screenA。

方法一

我创建了一个名为 "Back" 的 imageButton。当我按下 imageButton 时,它会 使用 setScreen(screenA) 将屏幕 B 传回屏幕 A。

方法二

我使用软键Keys.BACK将screenB传回screenA。

我的问题是:

1)方法1和方法2一样吗?

2) 我下面的概念正确吗?

方法 1 堆栈:screenA-->顶部的 screenB-->顶部的另一个 ScreenA。

Mehod2 Stack: A-->screenB 在上面,然后 screenB 被移除(如果 Keys.BACK 被按下)并且只返回到 A。

如果我的想法是正确的,Method1 会比 Method2 使用更多的内存吗?

希望您能理解我的问题,不便之处敬请见谅。

感谢回复。

LIBGDX 为您提供捕获后退按钮的方法,并且可以选择是将其设置回屏幕,还是通过捕获它而不是设置屏幕来停止按下后退按钮。 这是一个很好的做法,因为如果用户误按了返回软键怎么办?你应该检查一下。 根据您的项目和用户友好性,在屏幕上提供后退按钮的另一种方法是您想要的。 none 该方法很耗内存。它的正常应用程序流程。

我相信 setScreen() 并没有按照您的想法行事。 setScreen() 不操作任何堆栈。当您设置 Screen 时,先前的 Screen 将被删除并替换为您添加的新 Screen。

假设您执行了 setScreen(ScreenA),然后您从 ScreenA 执行了 setScreen(ScreenB) -> ScreenA 被删除并由 ScreenB 替换。如果你想要一个堆栈,你可以自己制作。通常我使用一个列表并将每个屏幕添加到顶部,当按下返回键时,我将它从列表中弹出,然后我将 setScreen() 设置为列表的最后一个屏幕。

在 Keys.Back 或“后退”按钮上,您会有相同的逻辑。

通常您会希望使用这一行来按照您的逻辑操作后退键。

Gdx.input.setCatchBackKey(true);