纹理缓存实现:纹理保存于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。