繁体   English   中英

如何在Scene2D libGDX中更改屏幕

[英]How to change Screens in Scene2D libGDX

我一直在谷歌搜索有关如何使用Scene2D使用LibGDX的多个屏幕的教程。 到目前为止,这是我在场景处理课中的内容,但我不知道从哪里开始。 我知道我必须对MainMenu.java的构造函数做一些事情,但我不知道它是什么。

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

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

    }

}

我不喜欢让我的屏幕课程与我的Game课程相结合。 我正在使用的方法是我所有游戏屏幕的抽象类,它有一个标志和功能,表示正在请求“下一个屏幕”。 然后我的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小时......

// ...


@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()的调用。

我发现这个链接可以解释我需要什么! https://code.google.com/p/libgdx-users/wiki/ScreenAndGameClasses

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM