主要需要3类
- 的ScreenManager类
- 摘要Screen类(可选)
- ScreenEnum(枚举)
播放屏幕和主菜单画面从抽象屏幕扩展。 屏幕管理根据从screenenum屏幕代码
****屏幕枚举类****切换屏幕
public enum ScreenEnum {
MAIN_MENU {
public AbstractScreen getScreen(Object... params) {
return new MainMenuScreen();
}
},
PLAY {
public AbstractScreen getScreen(Object... params) {
return new PlayScreen();
}
};
public abstract AbstractScreen getScreen(Object... params);
}
屏幕管理类
public class ScreenManager {
private static ScreenManager instance;
private Game game;
private ScreenManager() {
super();
}
public static ScreenManager getInstance() {
if (instance == null) {
instance = new ScreenManager();
}
return instance;
}
public void initialize(Game game) {
this.game = game;
}
public void showScreen(ScreenEnum screenEnum, Object... params) {
Screen currentScreen = game.getScreen();
AbstractScreen newScreen = screenEnum.getScreen(params);
newScreen.buildStage();
game.setScreen(newScreen);
// Dispose previous screen
if (currentScreen != null) {
currentScreen.dispose();
}
}
}
AbstarctScreen类(可选类)
public abstract class AbstractScreen implements Screen {
protected AbstractScreen() {
super();
}
public abstract void buildStage();
@Override
public void render(float delta) {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
}
@Override
public void show() {
}
@Override
public void resize(int width, int height){
}
@Override public void hide() {}
@Override public void pause() {}
@Override public void resume() {}
}
屏幕切换
ScreenManager.getInstance().showScreen(ScreenEnum.PLAY, 0);
ScreenManager.getInstance().showScreen(ScreenEnum.MAIN_MENU, 0);
我也一样com.baclogic.gdx.Game完成。我在这里找到了一个例子:http://stackoverflow.com/a/41818768/7061548和这里:http://book2s.com/java/src/package/com/badlogic/gdx/game.html – qwerty