天天看點

(libgdx小結)資源加載器

一、初始化及常見的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

	}

}
           

三、效果圖

(libgdx小結)資源加載器

四、源碼下載下傳

http://download.csdn.net/detail/caihongshijie6/7010675