Cocos2d-x精灵帧

精灵帧缓存(SpriteFrameCache)

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

SpriteFrameCache内部封装了一个Map<std::string, SpriteFrame*> _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")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值