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 兩次。