Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Scene2D libGDX中更改屏幕_Java_Android_Libgdx_Scene2d - Fatal编程技术网

Java 如何在Scene2D libGDX中更改屏幕

Java 如何在Scene2D libGDX中更改屏幕,java,android,libgdx,scene2d,Java,Android,Libgdx,Scene2d,我一直在谷歌搜索关于如何使用Scene2D在LibGDX中使用多个屏幕的教程。到目前为止,这是我在场景处理课上学到的东西,但我不知道接下来该怎么做。我知道我必须对MainMenu.java的构造函数做些什么,但我不知道它是什么 到目前为止,我得到的是: public class ScreenHandler extends Game{ public MainMenu Main; @Override public void create() { Main=

我一直在谷歌搜索关于如何使用Scene2D在LibGDX中使用多个屏幕的教程。到目前为止,这是我在场景处理课上学到的东西,但我不知道接下来该怎么做。我知道我必须对
MainMenu.java
的构造函数做些什么,但我不知道它是什么

到目前为止,我得到的是:

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

    }

}

我不太喜欢把我的屏幕课程和游戏课程结合起来。我使用的方法是一个抽象类,用于我的所有游戏屏幕,它有一个标志和功能来指示正在请求“下一个屏幕”。然后,我的游戏类的
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
方法中的所有屏幕,而是根据需要创建/处理屏幕的方法,但是,以上只是对总体思路的简化


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

我知道这是旧的,但只想指出,接受的答案不会呈现;刚刚被这件事耽搁了两个小时

// ...


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

    if (currentScreen.goBack) {
        setScreen(currentScreen.getBackScreen());
    } else if (currentScreen.goToNextScreen) {
        setScreen(currentScreen.getNextScreen());
    }
}
如果重写游戏的render()方法,则必须在游戏子类中添加对super.render()的调用