cocos2dx 资源 异步加载
来源:互联网 发布:java培训协议有效吗 编辑:程序博客网 时间:2024/05/17 01:09
本文转自: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的异步加载
Director::getInstance()->getTextureCache()->addImageAsync(reloadImages[curReloadImgNum],
CC_CALLBACK_1(LoadingScene::imageAsyncCallback,
this
));
2.plist和png一起的打包资源
废话不多,直接上方法,没有加载plist的api,我们使用如1的方法加载png,然后在回调函数中加载plist。
Director::getInstance()->getTextureCache()->addImageAsync(reloadPlists[curReloadPlistNum]+
"png"
,
CC_CALLBACK_1(LoadingScene::plistImageAsyncCallback,
this
));
注意回调函数的参数,这是plist异步加载的关键,形参是png纹理。
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,
this
));
void
LoadingScene::pvrPlistImageAsyncCallback(cocos2d::Texture2D* texture)
{
SpriteFrameCache::getInstance()->addSpriteFramesWithFile(reloadPvrPlists[curReloadPvrPlistNum].append(
"plist"
), texture);
curReloadPvrPlistNum++;
loading =
true
;
}
4.Cocos Studio导出的.ExportJson后缀的动画文件
ArmatureDataManager::getInstance()->addArmatureFileInfoAsync(reloadExportJsons[curReloadExportJsonNum],
this
, schedule_selector(LoadingScene::jsonAsyncCallback));
void
LoadingScene::jsonAsyncCallback(
float
f)
{
curReloadExportJsonNum++;
loading =
true
;
}
四种加载方法已经介绍完了,只要在update中做好按序加载就可以了。
如何优化内存,加载尽量少的资源?
我的这个场景叫LoadingScene,这是一个中转场景,既是切换两个场景之间的过渡场景,用来释放上一个场景的资源和预加载下一个场景资源。
在这个场景中,我们可以释放掉cache中的所有文件,然后根据下个场景的内容来加载所需的文件。 这就需要我们做好配置工作,比如保卫萝卜,下一关只有两种塔,我们只加载这两种塔的动画即可,而不需要所有塔全部加载。
还有一个小技巧关于异步加载exportJson的文件。这个异步加载,既可以加载动画缓存,还可以把跟它一起的plist和png一起加载到缓存中,所有如果想加载plist,也可以把它们到成静止的动画,然后使用exportJson加载即可使用里面的精灵。
来源网址:http://www.cocoachina.com/bbs/read.php?tid=219154
- cocos2dx 资源 异步加载
- cocos2dx异步加载资源制作Loading界面
- cocos2dx资源加载机制(同步/异步)
- cocos2dx资源加载机制(同步/异步)
- Cocos2dx之进度条使用,异步加载资源进缓存
- Cocos2dx 异步加载纹理
- 【cocos2dx 加载资源文件夹】
- cocos2dx 3.x 异步加载
- Cocos2dx多线程与异步加载
- UE4 异步资源加载
- UE4 异步资源加载
- ue4-异步加载资源
- UE4异步加载资源
- UE4-异步加载资源
- cocos2dx多套资源加载
- cocos2dx 资源加载的问题
- cocos2dx 资源加载进度显示
- 多线程第一步:资源异步加载
- 背包问题,最优装载问题
- 近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等)
- centos 安装 禅道
- 内存分配理解
- 字母图形
- cocos2dx 资源 异步加载
- 804 - Petri Net Simulation
- 【干货】国外程序员整理的 C++ 资源大全
- jQuery mobile 学习12 表单的使用方法及访问设备判断
- 806 - Spatial Structures
- Gvim —— win 7 下 vim 环境配置 及python开发常用设置
- 腾讯云 CentOS6.2 64位 NFS 安装
- 810 - A Dicey Problem
- 黑马程序员————IOS学习笔记 第11篇 经典示例计算代码行数