Cocos2d-x精灵帧

精灵帧缓存(SpriteFrameCache)

SpriteFrameCache 主要用于多张碎图合并纹理图片,纹理图片在一张大图中包含多张小图,通过TextureCache引用会存在诸多不便。因而衍生出精灵框帧的处理方式,把截取好的纹理信息保存在一个精灵框帧内,精灵通过切换不同框帧来显示不同的图案。

SpriteFrameCache内部封装了一个Map _spriteFrames对象,key为帧名称。

SpriteFrameCache用来处理plist文件,plist文件保存每个独立精灵在大图中的位置和大小信息,plist文件对应一张包含多张精灵的大图,plist文件可使用 TexturePacker 制作。

SpriteFrameCache 常用接口和 TextureCache 类似,唯一需要注意的是添加精灵帧的配置文件是一个plist文件和一张大的纹理图。

SpriteFrameCache跟TextureCache功能一样,将SpriteFrame缓存起来,在下次使用时直接去获取。不过跟TextureCache不同的是,如果内存池不存在要查找的图片,会提供找不到,而不会去本地加载图片。

  • TextureCache是最底层也是最有效的纹理缓存,缓存是加载到内存中的纹理资源,也就是图片资源。
  • SpriteFrameCache精灵框帧缓存,缓存的是精灵帧。
  • SpriteFrameCache是基于TextureCache上的封装,缓存的是精灵帧,是纹理指定区域的矩形块。所有精灵帧都在同一个纹理中,通过切换不同的框架来显示出不同的图案。

常用SpriteFrameCache接口

  • 获取单例SpriteFrameCache对象
SpriteFrameCache* cache = SpriteFrameCache::getInstance();
  • 销毁SpriteFrameCache对象
SpriteFrameCache::destroyInstance();
  • 使用SpriteFrameCache获取指定的精灵帧,创建精灵对象。
SpriteFrameCache *sfc = SpriteFrameCache::getInstance();
sfc->addSpriteFramesCacheWithFile("pic.plist", "pic.png");

// 从精灵帧缓存中查找pic1.png图片
auto frame = Sprite::createWithSpriteFrameName("pic1.png");
this->addChild(frame, 2);

使用注意

quick:
display.addSpriteFramesWithFile("image/role.plist", "image/role.pvr.ccz");
------------------------------------------------------------------------------------------
attempt to call method 'addSpriteFramesWithFile' (a nil value)
-------------------------------------------------------------------------------------------
不同版本的接口名称已做调整,可使用
display.addSpriteFrames("images/role.plist", "images/role.pvr.ccz")

你可能感兴趣的:(Cocos2d-x精灵帧)