java - 如何在 Scene2D libGDX 中更改屏幕

标签 java android libgdx scene2d

我一直在 Google 周围搜索有关如何使用 Scene2D 将多个屏幕与 LibGDX 结合使用的教程。到目前为止,这是我在场景处理类(class)中所拥有的,但我不知道从这里去哪里。我知道我必须对 MainMenu.java 的构造函数做一些事情,但我不知道它是什么。

到目前为止我得到了什么:

public class ScreenHandler extends Game{
    public MainMenu Main;
    @Override
    public void create() {
          Main= new MainMenu();
          setScreen(Main);

    }

}

最佳答案

我不太喜欢将我的屏幕类与我的游戏类耦合。我使用的方法是我所有游戏屏幕的抽象类,它有一个标志和功能来指示正在请求“下一个屏幕”。然后,我的 Game 类的 render 方法可以检查该标志并相应地呈现新屏幕。

public class MyGame extends Game {

    // ...

    @Override
    public void create() {
        GameScreen screen1 = new GameScreen(); // extends AbstractScreen
        GameScreen screen2 = new GameScreen(); // extends AbstractScreen
        screen1.setNextScreen(screen2);
        screen2.setBackScreen(screen1);
    }

    @Override
    public void render() {
        AbstractScreen currentScreen = (AbstractScreen) getScreen();

        if (currentScreen.goBack) {
            setScreen(currentScreen.getBackScreen());
        } else if (currentScreen.goToNextScreen) {
            setScreen(currentScreen.getNextScreen());
        }
    }

在实践中,我不会在 create 方法中实际实例化所有屏幕,而是根据需要创建/处理屏幕的方法,但是,以上是对一般想法的简化。

然后各个屏幕负责根据需要设置 goBackgoToNextScreen 标志。

关于java - 如何在 Scene2D libGDX 中更改屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18624347/

相关文章:

java - 获取用户输入,放入数组中并打印出每个字母使用了多少次

java - 弗林克 1.9 : Standalone Cluster : Failed to transfer file from TaskExecutor id : `AskTimeoutException`

android - 控制RadioButton的状态

android - 使用 libgdx 绘画会使物体闪烁

java - 在框架布局中显示 Activity

java - 在 Tomcat 上的 Web 应用程序中使用 Batik 时出现 "SAX2 driver class org.apache.crimson.parser.XMLReaderImpl not found"

android - 为什么对 DialogFragment 使用 newInstance 而不是构造函数?

android - 无法解析符号 PreferenceFragmentCompat

java - 如何处理libGDX的Box2D ContactListener中的空指针异常?

java - 在 Java Libgdx 中正确使用 unProject