【问题标题】:How to change Screens in Scene2D libGDX如何在 Scene2D libGDX 中更改屏幕
【发布时间】:2013-09-08 13:56:18
【问题描述】:

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

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

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

    }

}

【问题讨论】:

    标签: java android libgdx scene2d


    【解决方案1】:

    我不太喜欢将我的屏幕类与我的游戏类结合起来。我使用的方法是我所有游戏屏幕的抽象类,它有一个标志和功能来指示正在请求“下一个屏幕”。然后,我的 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 标志。

    【讨论】:

      【解决方案2】:

      我知道这是旧的,但只是想指出接受的答案不会呈现;刚刚在这上面纠结了 2 小时...

      // ...
      
      
      @Override
      public void render() {
          AbstractScreen currentScreen = (AbstractScreen) getScreen();
      
          if (currentScreen.goBack) {
              setScreen(currentScreen.getBackScreen());
          } else if (currentScreen.goToNextScreen) {
              setScreen(currentScreen.getNextScreen());
          }
      }
      

      如果您覆盖 Game 的 render() 方法,则必须在 Game 子类中添加对 super.render() 的调用。

      【讨论】:

        猜你喜欢
        • 2015-05-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-03
        • 1970-01-01
        • 2021-03-27
        相关资源
        最近更新 更多