我不喜欢将我的屏幕类与我的游戏类结合起来。我使用的方法是我的所有游戏屏幕的抽象类,它有一个标志和功能来指示正在请求“下一个屏幕”。然后render
我的 Game 类的方法可以检查该标志并相应地渲染一个新屏幕。
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
标志。