Cocos精灵帧缓存

精灵帧缓存是Cocos2d-x中用于优化资源加载和内存使用的一种机制,它通过单例模式实现。精灵帧由plist描述文件和大图组成,可以减少加载次数并提高内存效率。通过`addSpriteFramesWithFile`加载plist文件,使用`getSpriteFrameByName`或`createWithSpriteFrameName`获取和创建精灵。在场景切换时,通常需要清理精灵帧缓存以释放资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


精灵帧就是多个小图组成的一张大图,这样减少了加载次数。且大图的“边角料”比小图的要少很多,提高了内存使用率。

一般来说,精灵帧由plist(描述文件)和一张大图组成。(可以用TexturePacker——一种专业软件将若干小图生成一份精灵帧)

精灵帧缓存:也是单例

SpriteFrameCache* cache = SpriteFrameCache::getInstance();

添加精灵帧缓存(plist文件):cache->addSpriteFramesWithFile("animations/grossini_blue.plist");//addSpriteFramesWithFile会自动解析plist文件,将plist中描述的所有精灵帧加载到内存

获取精灵帧SpriteFrame* frame = cache->getSpriteFrameByName("grossini_blue_01.png");注意这里的参数是plist中的小图片名称

使用精灵帧Sprite* sprite = Sprite::createWithSpriteFrame(frame);参数是纹理名

或者: Sprite* sprite = Sprite::createWithSpriteFrameName("grossini_blue_01.png");这里的参数也是plist中的小图片名称

删除精灵帧:removeSpriteFrameByName()——单个清除  emoveSpriteFrames()——全清除     

                            removeSpriteFrameFromFile(plist)——按文件清除

删除工作常常用在场景切换时删除旧场景缓存。

和纹理缓存的关联:

当精灵帧缓存的plist文件添加之后,大图就被添加到了纹理缓存中去了,而精灵帧缓存中就存留了一个个小图的信息,包括小图的Texturre2D对象(即小图本身)以及其位置信息Rect对象,此外还有小图对大图的retain引用关联(就是为了防止纹理缓存清除之后大图消失)。故此每一张大图都被其小图们引用着。那么在切换时必然也要清除精灵帧缓存了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值