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