cocos2dx csb文件的预加载

前端之家收集整理的这篇文章主要介绍了cocos2dx csb文件的预加载前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
预加载资源一般放入缓存中,有异步和同步加载两种方式(一般针对plist大文件
这些资料网上有各种博客讲解,大家一搜就能搜到。

可查看下这个帖子:http://www.cocoachina.com/bbs/read.php?tid=219154

加载csb:
CSLoader.h 头文件
static cocos2d::Node* createNode(const std::string& filename);//普通加载csb
static cocos2d::Node* createNode(const std::string& filename,const ccNodeLoadCallback& callback);
static cocos2d::Node* createNode(const Data& data);//预加载csb
static cocos2d::Node* createNode(const Data& data,const ccNodeLoadCallback &callback);
可使用createNode(const Data& data)函数来达到预加载csb的作用。

使用步骤:
const Data data = FileUtils::getInstance()->getDataFromFile("res/MainScene.csb");
auto _node = CSLoader::createNode(data);
this->addChild(_node);

缺点:需要一个全局变量来保存data数据。没图片预加载那么方便。但是自己控制内存也不错。


函数简介:
进入
createNode函数后,会指向:Node * CSLoader::createNode(const Data& data,const ccNodeLoadCallback &callback)
在它里面主要有4部分组成
1、
auto csparsebinary = GetCSParseBinary(data.getBytes()); //data数据转移到 csparsebinary
2、SpriteFrameCache::getInstance()->addSpriteFramesWithFile(textures->Get(i)->c_str());//加载资源
3、 node = loader->nodeWithFlatBuffers(csparsebinary->nodeTree(),callback);//csparsebinary数据转化成node数据

4、loader->reconstructNestNode(node);//重建node

C++中有这个方法,但lua中没有,尝试genbindings,FileUtils::getInstance()->getDataFromFile会报错,解决错误后, createNode(const Data& data,const ccNodeLoadCallback &callback)会断点,是否不支持lua?

if (argc == 2)
{
cocos2d::Data *arg0;

ok &= luaval_to_object<cocos2d::Data>(tolua_S,2,"cc.Data",&arg0,"cc.CSLoader:createNode");

if (!ok) { break; }
std::function<void(cocos2d::Ref *)> arg1;
do {
// Lambda binding for lua is not supported.
assert(false);
} while (0)
;
cocos2d::Node* ret = cocos2d::CSLoader::createNode(*arg0,arg1);
object_to_luaval<cocos2d::Node>(tolua_S,"cc.Node",(cocos2d::Node*)ret);
return 1;
}

lua调用createNode带回调函数的接口,回调函数不起作用,lua好像不支持
;

原文链接:https://www.f2er.com/cocos2dx/338313.html

猜你在找的Cocos2d-x相关文章