cocos2dx资源加载机制(同步/异步),cocos2dx异步
首先cocos2dx里的资源,有png,plist(pvr),exportjson(json)大致这三类,我们也从这3类去研究相应的加载代码。
本次代码分析基于:
cocos2dx3.2
1、png
png格式的资源,从sprite作为一个切入口来分析,一般Sprite的创建如下
Sprite* Sprite::create(const std::string& filename)
参数filename,是图片资源的路径。
内部调用的initWithFile
Sprite *sprite = new (std::nothrow) Sprite();
if (sprite && sprite->initWithFile(filename))
{
sprite->autorelease();
return sprite;
}
在initWithFile方法里
Texture2D *texture = Director::getInstance()->getTextureCache()->addImage(filename);
if (texture)
{
Rect rect = Rect::ZERO;
rect.size = texture->getContentSize();
return initWithTexture(texture, rect);
}
在Texture2D * TextureCache::addImage(const std::string &path)方法是实际的载入资源的实现
// 将相对路径转换成绝对路径
std::string fullpath = FileUtils::getInstance()->fullPathForFilename(path);