一、初始化及常見的API
manager = new AssetManager();//初始化資料總管
manager.load("animation.png", Texture.class);//預加載資源
manager.unload("animation.png");//解除安裝資源
manager.isLoaded("animation.png",Texture.class)//判斷資源animation.png是否已經加載
manager.get("animation.png", Texture.class).根據資源的名字來擷取相應的資源
AssetManager 類
API定義: 負責加載類似于 textures, bitmapfonts, tile maps, sounds, music 等類型的檔案。
功能方法:(1)
clear()
方法:清空和删除所有已加載資源和預加載隊列。
(2)
containsAsset(T asset)
:傳回的是一個布爾類型,檢測是否加載了否個資源。
(3)
finishLoading()
: 所有資源加載完成後,結束加載資源,也可以手動設定加載到某一項結束加載。
(3)
getAssetFileName(T asset)
:擷取資源名字,得到的是一個String類型的檔案。
(4)
getLoadedAssets()
:擷取已經加載的資源數量。
(5)
getProgress()
:擷取加載進度,傳回一個0 - 1之間的小數,這個一般可以用作制作進度條。
(6)
isLoaded(java.lang.String fileName)
:傳回的是一個布爾類型,檢測你傳入的檔案是否已經被加載了,一般使用的if判斷語句中。
(7)
load(java.lang.String fileName, java.lang.Class<T> type)
:将已傳入的檔案名和類型加入到預加載隊列,為了防止名字和類型重複,這裡需要将名字和類型都傳入,常用。
(8)
setLoader(java.lang.Class<T> type, AssetLoader<T,P> loader)
:設定加載器,其實AssetManager類中包裝了需要Assetloader對象,這樣才能完成不同類型的檔案的加載,當然AssetManager也可以加入加載器。
(9)
unload(java.lang.String fileName)
:解除安裝資源,如果某個資源不使用了,就可以解除安裝該資源,這樣有利于遊戲流暢性。
(10)update():加載資源,實際上Load方法其實隻是将預加載的資源加載到了預加載隊列,實質上并沒有加載資源,使用 update()方法才會加載資源,調用該方法才能,使不斷加載那寫儲存在預加載對了中的資源。
功能優點:(官方翻譯)
(1)加載大部分資源采用異步加載的方式,這樣就能在加載的同時不阻塞渲染程序.
(2)實作了引用計數,當A和B都依賴C素材的時候,C隻有在A,B都銷毀了才會銷毀.這也意味着即使一個資源加載了很多次,在記憶體中也之後一份.
(3)使用一個單一管理器來實作管理所有素材.
(4)可以實作加載素材時占用的系統記憶體。
二、應用舉例
package com.example.groupactiontest;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.assets.AssetManager;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
public class MyGame implements ApplicationListener {
AssetManager manager;//資料總管
SpriteBatch batch;
@Override
public void create() {
batch = new SpriteBatch();
manager = new AssetManager();//初始化資料總管
manager.load("animation.png", Texture.class);//預加載資源
}
@Override
public void dispose() {
manager.unload("animation.png");//解除安裝資源
}
@Override
public void pause() {
manager.unload("animation.png");
}
@Override
public void render() {
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
manager.update();//加載資源
if(manager.isLoaded("animation.png",Texture.class)){//判斷資源animation.png是否已經加載
batch.begin();
batch.draw(manager.get("animation.png", Texture.class), 0,0);//manager.get("animation.png", Texture.class).根據資源的名字來擷取相應的資源
batch.end();
}
}
@Override
public void resize(int arg0, int arg1) {
// TODO Auto-generated method stub
}
@Override
public void resume() {
// TODO Auto-generated method stub
}
}
三、效果圖

四、源碼下載下傳
http://download.csdn.net/detail/caihongshijie6/7010675