分享:
概述每個遊戲或應用都必須有若干的資源——無論是紋理,聲音,位**字,或其它各種物件。這些資源可以是嵌入的(可以理解為所有資源都在乙個檔案的瀏覽器遊戲)或隨遊戲進行的(適用於手機遊戲儲存ram需要嵌入物件)。
在如何引入資源以不同的方式訪問它們有許多選擇。assetmanager幫助你做到這些。它是允許你以各種方式新增資源,並且很輕易地呼叫它們的類。
目前,assetmanager支援下列型別的資源:
·紋理·紋理圖集
·聲音·位**字
載入資源
比方說你要從硬碟載入一些資源,並從嵌入類載入其它資源。這裡是如何通過assetmanager來載入它們。
首先,建立乙個具有嵌入宣告的類。
public class embeddedassets
對於嵌入資源,遵循這些命名規範:
·嵌入的類名必須與檔名完全相同,不含副檔名。這是必須的以便從(圖集,位**字的)xmls引用不會中斷。
·圖集和文字xml檔案可以使用任意名字,因為它們永遠不會通過檔名來引用。
然後讓assetmanager例項化資源:
var assets:assetmanager = new assetmanager();assets.verbose = true;
// 對 "bird"紋理和"explosion"聲音進行排隊
assets.enqueue(embeddedassets);
// 對來自特定位址的檔案進行排隊
assets.enqueue("");
// 對來自硬碟的檔案進行排隊(僅air)
// 對乙個目錄所有的內容進行遞迴排隊(僅air)
// ->現在載入所有的佇列中的資源。當「ratio」等於1時,完成載入.
assets.loadqueue(function(ratio:number):void
);
你可以用相同的方式來新增紋理圖集和位**字:只要把xml檔案和它們引用的紋理加到佇列中,它們將會被載入。位**字將被馬上在textfield類中註冊。你不能通過assetmanager來訪問它們。
呼叫資源
要呼叫資源,只要使用類的不同方法。每次資源通過資源不帶副檔名的名稱或嵌入物件的類名來引用。
// 這將首先搜尋命名的紋理,然後再搜尋圖集var texture:texture = assets.gettexture("bird");
// 這將檢視所有命名的紋理和圖集
var textures:vector.= assets.gettextures("animation");
var explosion:soundchannel = assets.playsound("explosion");
注意
Starling之資源管理類
概述 每個遊戲或應用都必須有若干的資源 無論是紋理,聲音,位 字,或其它各種物件。這些資源可以是嵌入的 可以理解為所有資源都在乙個檔案的瀏覽器遊戲 或隨遊戲進行的 適用於手機遊戲儲存ram需要嵌入物件 在如何引入資源以不同的方式訪問它們有許多選擇。assetmanager幫助你做到這些。它是允許你以...
Item 14 資源管理類的拷貝
raii物件只能管理堆上new出來的資源,其它的不行。比如下面的mutex 只能自定義乙個資源管理類,來管理這個mutex資源,以防止它被意外地忽略。使用方法如下 如果拷貝乙個raii資源,會發生什麼?一般的處理方式 1 因為有的拷貝raii資源無意義,比如lock。所以禁止拷貝 2 如果拷貝有意義...
Item 14 資源管理類的拷貝
raii物件只能管理堆上new出來的資源,其它的不行。比如下面的mutex void lock mutex pm lock mutex pointed to by pm void unlock mutex pm unlock the mutex 只能自定義乙個資源管理類,來管理這個mutex資源,以...