您的位置:首页 > 移动开发 > Cocos引擎

Cocos缓存的实现

2016-03-28 16:02 459 查看



纹理缓存实现:纹理保存于std::unordered_map<std::string,
Texture2D*> _textures;的一个map映射中,显然,string就是其文件名称。这里的map是不会添加引用计数的

纹理缓存实现主要是看addImage()函数实现,其首先根据文件路径创建一个全路径,之后查看是否已经缓存过,如果是的话则获取这个纹理,反之,则加载该纹理,将数据存入Image对象中(newImage(image)-> initWithImage(image)->

initWithImage(image,g_defaultAlphaPixelFormat)->设置宽高属性(由initWithPng提供宽高)->测定是否超出额定宽高(4096x4096)->其他属性->如果该文件不能解压缩,则提醒,否则解压缩->将像素转换成渲染模式(convertDataToFormat)->initWithData()成功,保存入map中

精灵帧实现:同样是map(Map<std::string,
SpriteFrame*> _spriteFrames;),但是不是std的map,而是cocos自定义的map。所以会自动增加引用计数,此外,纹理map是路径+纹理,精灵帧map是名字+精灵帧(这个名字就是小图片名了)

同样是addSpriteFramesWithFiles:获取路径——看是否加载过——加载(先获取metedata,在获取图片路径)——大图片放入纹理缓存——addSpriteFramesWithDictionary 根据plist添加map和精灵帧,并为精灵帧retain。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: