天天看點

Starling中AssetManager加載檔案的流程整理

  Starling做移動開發,會用到大量的紋理和圖檔素材、XML配置等檔案,需要頻繁使用AssetManager類加載和使用他們,有時如果擷取素材時報錯,不知道AssetManager類的調用順序就會對調試造成困難。因為工作需要對AssetManager的内部加載流程做了一次跟蹤調試,這裡做一次記錄和整理,以備他用。

  AssetManager中,在調用enqueue方法向加載隊列添加要加載的素材後,需要在最後調用loadQueue方法,是以也是從這裡開始探索AssetManager的加載流程。因為期間使用了大量的函數變量,為了簡便說明,将會根據各個函數的大寫縮寫給他們命名。

一、用到的方法

1、loadQueue方法(LQ)

  方法中的幾個函數變量構成整個流程所需的步驟,他們分别是:

loadQueueElement(LQE)

loadNextQueueElement(LNQE)

processXmls(PXS)

finish(F)

2、processRawAsset方法(PRA)

  包含的函數變量:

process(P)

3、loadRawAsset方法(LRA)

  包含的函數變量:

onUrlLoaderComplete(OULC)

onLoaderComplete(OLC)

complete(C)

4、addTextureAtlas(ATA)

5、addTexture(AT)

6、addXml(AX)

7、removeTexture(RT)

二、加載流程

1、加載紋理

LQ -> LQE -> PRA -> LRA -> OULC -> OLC -> C -> P -> AT -> LNQE -> PRA(next)

2、加載紋理XML配置

LQ -> LQE -> PRA -> LRA -> QULC -> C -> P(xmls.push) -> LNQE -> PRA(next)

3、加載其他檔案

LQ -> LQE -> PRA -> LRA -> QULC -> C -> P -> P -> AX -> LNQE -> PRA(next)

   加載其他檔案的時候,在 P 方法中會因為傳入的是二進制資料類型而調用 P 兩次。