转载自:http://cn.cocos2d-x.org/tutorial/show?id=1277
本章只分享一下异步加载的逻辑,如有不对的地方还望大家及时指出。
目前我代码中需要异步加载的资源一共有四类:
1.png,单个png的情况比较少
2.plist和png一起的打包资源
3.plist和pvr.ccz一起的打包资源
4.CocosStudio导出的.ExportJson后缀的动画文件
再重复一遍加载机制:所有的资源是按序加载的,不可同时加载多个文件。执行异步加载的处理肯定是写在void update(float f)中,做到按帧加载。
1.png的异步加载
1
2
|
Director::getInstance()->getTextureCache()->addImageAsync(reloadImages[curReloadImgNum],
CC_CALLBACK_1(LoadingScene::imageAsyncCallback,
this
));
|
2.plist和png一起的打包资源
废话不多,直接上方法,没有加载plist的api,我们使用如1的方法加载png,然后在回调函数中加载plist。
void
LoadingScene::plistImageAsyncCallback(cocos2d::Texture2D*texture)
{
SpriteFrameCache::getInstance()->addSpriteFramesWithFile(reloadPlists[curReloadPlistNum].append(
"plist"
),texture);
curReloadPlistNum++;
loading=
true
;
}
|
3.plist和pvr.ccz一起的打包资源
类似2的方法。
Director::getInstance()->getTextureCache()->addImageAsync(reloadPvrPlists[curReloadPvrPlistNum]+
"pvr.ccz"
CC_CALLBACK_1(LoadingScene::pvrPlistImageAsyncCallback,monospace!important; font-size:1em!important; min-height:inherit!important">));
LoadingScene::pvrPlistImageAsyncCallback(cocos2d::Texture2D*texture)
{
SpriteFrameCache::getInstance()->addSpriteFramesWithFile(reloadPvrPlists[curReloadPvrPlistNum].append(
;
4.Cocos Studio导出的.ExportJson后缀的动画文件
|