Starling之資源管理類

2021-06-16 15:18:43 字數 1441 閱讀 3662

分享:

概述每個遊戲或應用都必須有若干的資源——無論是紋理,聲音,位**字,或其它各種物件。這些資源可以是嵌入的(可以理解為所有資源都在乙個檔案的瀏覽器遊戲)或隨遊戲進行的(適用於手機遊戲儲存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資源,以...