我一直在Google上搜索有关如何使用Scene2D使用LibGDX的多个屏幕的教程。到目前为止,这是我在场景处理课中的内容,但我不知道从哪里开始。我知道我必须对MainMenu.java
的构造函数做一些事情,但我不知道它是什么。
到目前为止我得到了什么:
public class ScreenHandler extends Game{
public MainMenu Main;
@Override
public void create() {
Main= new MainMenu();
setScreen(Main);
}
}
答案 0 :(得分:6)
我不喜欢让我的屏幕课程与我的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
方法中的所有屏幕,而是根据需要设置创建/处理屏幕的方法,但是,上面是对一般概念的简化。
然后,各个屏幕负责根据需要设置goBack
和goToNextScreen
标志。
答案 1 :(得分:4)
我知道这是旧的,但只是想指出接受的答案不会呈现;刚刚被绑在一起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()的调用。
答案 2 :(得分:1)
我发现这个链接可以解释我需要什么! https://code.google.com/p/libgdx-users/wiki/ScreenAndGameClasses