因為案例比較簡單,所以簡單用AndroidApplication -> Game -> Stage 搭建框架
一、主入口,無特殊
public class App extends AndroidApplication {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//初始化Demo
initialize(new Demo(), false);
}
}
二、游戲主類
這里我們需要資源加載器來管理資源,這里為了測試,可以多加載些圖片效果明顯點。這里我們還使用了舞臺,使用了自適應分辨率。
這里的關鍵是在渲染方法中不斷的刷新資源管理器,并且獲取當前加載進度,把它傳給舞臺處理。
public class Demo extends Game {
// 資源管理器
private AssetManager assetManager = null;
// 舞臺子類
private Scene scene = null;
@Override
public void create() {
// 生成資源管理器
assetManager = new AssetManager();
// 加載測試圖片
for (int i = 1; i <= 6; i++)
assetManager.load("map" + i + ".png", Texture.class);
// 生成舞臺,480x800為基準分辨率,默認延伸
scene = new Scene(480, 800);
}
@Override
public void render() {
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
// 刷新資源管理器
assetManager.update();
// 獲取資源加載百分比,1代表100%
float progress = assetManager.getProgress();
scene.draw(progress);
}
}
三、舞臺類
這里沒有特別的地方,只是將獲取的進度參數展示出來。
public class Scene extends Stage {
private BitmapFont font;
public Scene(float width, float height) {
super(width, height, true);
font = new BitmapFont(Gdx.files.internal("f.fnt"), false);
font.setScale(0.6f);
}
public void draw(float t) {
super.draw();
batch.begin();
if (t < 1.0f) {
font.draw(batch, "Loading " + (int) (t * 100) + "%", 20f,
height / 2f);
} else {
font.draw(batch, "loaded successfully", 20f, height / 2f);
}
batch.end();
}
}
四、程序截圖

源碼下載