因為案例比較簡單,所以簡單用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();
}
}
四、程式截圖
源碼下載