LibGdx练习-像素鸟(四)
screen基类
public class BaseScreen extends ScreenAdapter {
protected Stage stage;
protected MainGame game;
public BaseScreen(MainGame game){
this.game = game;
stage = new Stage(new StretchViewport(
game.getWorldWidth(),
game.getWorldHeight()
));
}
@Override
public void render(float delta) {
super.render(delta);
stage.act();
stage.draw();
}
@Override
public void dispose() {
super.dispose();
stage.dispose();
}
public MainGame getGame() {
return game;
}
}
BaseScreen类继承ScreenAdapter基类,自带一个stage对象和一个MainGame启动类对象。
类中重写了render方法和dispose方法,完成对于stage的绘制和释放。
加载界面
LoadScreen实现资源的加载,展示加载等待界面并在资源加载后转到游戏界面。
public class LoadScreen extends BaseScreen {
private LoadGroup loadGroup;
private Texture texture;
private boolean isLoaded = true;
public LoadScreen(MainGame mainGame){
super(mainGame);
}
@Override
public void show() {
// 获取加载等待界面图像
AssetsUtil.getAssetManager().load("atlas/timg.gif",Texture.class);
AssetsUtil.getAssetManager().finishLoading();
texture = AssetsUtil.getAssetManager().get("atlas/timg.gif");
// 调用加载界面演员组展示界面
loadGroup = new LoadGroup(getGame(),texture);
loadGroup.setSize(Res.FIX_WORLD_WIDTH,Res.FIX_WORLD_HEIGHT);
// 添加演员到stage
stage.addActor(loadGroup);
// 加载全部资源
AssetsUtil.load();
}
@Override
public void render(float delta) {
super.render(delta);
// 资源加载完毕跳转到游戏界面
if (AssetsUtil.update()&&isLoaded==true){
AssetsUtil.loadFinished();
getGame().setGameScreen(new GameScreen(getGame()));
getGame().setScreen(getGame().getGameScreen());
isLoaded = false;
}
}
@Override
public void dispose() {
super.dispose();
if (texture!=null){
texture.dispose();
}
}
}
group基类
public class BaseGroup extends Group {
protected MainGame mainGame;
public BaseGroup(MainGame mainGame) {
this.mainGame = mainGame;
}
public MainGame getMainGame() {
return mainGame;
}
}
没什么可说的,传进来一个MainGame实例。
LoadGroup
public class LoadGroup extends BaseGroup {
public LoadGroup(MainGame mainGame, Texture texture) {
super(mainGame);
init(texture);
}
private Image loadImage;
private void init(Texture texture) {
loadImage = new Image(texture);
loadImage.setSize(Res.FIX_WORLD_WIDTH,Res.FIX_WORLD_HEIGHT);
addActor(loadImage);
}
}
设置背景图片大小,并放到group中。此处主要是为了项目架构规整,我们完全可以不使用group直接把Image对象添加到stage中展示出来即可。
texture = AssetsUtil.getAssetManager().get("atlas/timg.gif");
image = new Image(texture);
stage.addActor(image);
本文介绍使用LibGdx框架开发像素风格游戏“像素鸟”的过程,重点讲解了BaseScreen类作为屏幕基类的设计,包括其初始化、渲染和资源释放的方法。同时,深入探讨了LoadScreen类如何实现游戏资源的加载及展示加载界面,直至游戏准备就绪。
810

被折叠的 条评论
为什么被折叠?



