位置: 编程技术 - 正文

场景切换时清理缓存!!CCTextureCache、CCSpriteFrameCache、CCAnimationCache(场景切换方式)

编辑:rootadmin
cocos2d-x中存在3个缓存类,都是全局单例模式。1.CCTextureCache首先是最底层也最有效的纹理缓存CCTextureCache,这里缓存的是加载到内存中的纹理资源,也就是图片资源。其原理是对加入缓存的纹理资源进行一次引用,使其引用计数加一,保持不被清除,其cocos2d-x的渲染机制是可以重复使用同一份纹理在不同的场合进行绘制,从而到达重复使用,降低内存和CPU运算资源的开销的目的。常用的是如下所示的3个接口:static CCTextureCache* sharedTextureCache(); //返回纹理缓存的全局单例CCTexture2D* addImage(const char* fileimage); //添加一张纹理图片到缓存中void removeUnusedTextures(); //清除不使用的纹理在这3个接口中,CCTextureCache屏蔽了加载纹理的许多细节;addImage函数会返回一个纹理CCTexture2D的引用,可能是新加载到内存的,也可能是之前已经存在的;而removeUnusedTextures则会释放当前所有引用计数为1的纹理,即目前没有被使用的纹理。实际上,我们很少需要调用addImage这个接口,因为引擎内部所有的纹理加载都是通过这个缓存进行的,换句话说,载入的每一张图片都被缓存了,所以我们更需要关心什么时候清理缓存。引擎会在设备出现内存警告时自动清理缓存,但是这显然在很多情况下已经为时已晚了。一般情况下,我们应该在切换场景时清理缓存中的无用纹理,因为不同场景间使用的纹理不同的。如果确实存在着共享的纹理,将其加入一个标记数组来保持其引用计数,以避免被清理。2.CCSPriteFrameCache第二个则是精灵框帧缓存。顾名思义,这种缓存的精灵框帧CCSpriteFrame,它主要服务于多张碎图合并出来的纹理图片。这种纹理在一张大图中包含了多张小图,直接通过CCTextureCache引用会有诸多不便,因而衍生出来精灵框帧的处理方式,即把截取好的纹理信息保存在一个精灵框帧内,精灵通过切换不同的帧来显示不同的图案。CCSpriteFrameCache的常用接口和CCTextureCache类&#;,不在赘述了,唯一需要注意的是添加精灵帧的配套文件——一个plist文件和一张大的纹理图。下面列举了CCSpriteFrameCache常用的方法:static CCSPriteFrameCache* sharedSpriteFrameCache(); //全局共享的缓存单例void addSpriteFrameWithFile(const char *pszPlist); //通过plist配置文件添加一组精灵帧void removeUnusedSpriteFrames(); //清理无用缓存3.CCAnimationCache最后一个是CCAnimationCache动画的缓存。通常情况下,对于一个精灵动画,每次创建时都需要加载精灵帧,按顺寻添加到数组,在创建对应动作类,这是一个非常烦琐的计算过程。对于使用频率高的动画,比如鱼的游动,将其加入缓存可以有效降低每次创建的巨大消耗。由于这个类的目的和缓存内容都非常简单直接,所以其接口也是最简单了的,如下所示:static CCAnimationCache* sharedAniationCache(); //全局共享的单例void addAnimation(CCAnimation *animation, const char *name); //添加一个动画到缓存void removeAnimationByName(const char *name); //移除一个指定的动画CCAnimation* animationByName(const char *name); //获得事先存入的动画唯一不一样的是,这次动画缓存需要我们手动维护全部动画信息。也因为加载帧动画完全是代码操作的,目前还没有配置文件指导,所以不能像另外两个缓存那样透明化。实际上,如果考虑到两个场景间使用的动画基本不会重复,可以直接清理整个动画缓存。所以,在场景切换时我们应该加入如下的清理缓存操作:void releaseCaches(){CCAnimationCache::purgeSharedAnimationCache();CCSpriteFrameCache::sharedSpriteFrameCache()->removeUnusedSpriteFrames();CCTextureCache::sharedTextureCache()->removeUnuserdTextures();}&#;得注意的是清理的顺序,应该先清理动画缓存,然后清理精灵帧,最后是纹理。按照引用层级由高到低,以保证保释引用有效。

推荐整理分享场景切换时清理缓存!!CCTextureCache、CCSpriteFrameCache、CCAnimationCache(场景切换方式),希望有所帮助,仅作参考,欢迎阅读内容。

场景切换时清理缓存!!CCTextureCache、CCSpriteFrameCache、CCAnimationCache(场景切换方式)

文章相关热门搜索词:场景切换叫什么,场景转换器怎么关掉,场景切换方式,场景转换器怎么关掉,场景切换效果是什么意思,场景切换叫什么,场景切换效果是什么意思,场景切换叫什么,内容如对您有帮助,希望把文章链接给更多的朋友!

如何优化cocos2d/x程序的内存使用和程序大小 评论(9)收藏举报目录(?)[]本站文章均为李华明Himi原创,转载务必在明显处注明:转载自【黑米GameDev街区】原文链接:

学习的引子 毕业2年半了,大学里浑浑噩噩的过来了,工作当仁不让的就是感觉力不从心,总觉得这两年过得很不踏实,作为一个程序员,慌张的原因无非对自己的

关于3.0屏幕适配的一小点归纳 在setDesignResolutionSize()方法中,推荐使用新的缩放配置FIXED_WIDTH和FIXED_HEIGHT区别:宽比和高比都是指屏幕与设计的比,简写:SW/DW,SH/DHFIXED_WIDTH,以宽比

标签: 场景切换方式

本文链接地址:https://www.jiuchutong.com/biancheng/368904.html 转载请保留说明!

上一篇:cocos2d-x性能优化的那些事(cocos2dx性能优化与包体优化)

下一篇:如何优化cocos2d/x程序的内存使用和程序大小(如何优化资本结构)

  • 租房代收水电费税率
  • 技术服务收入属于劳务报酬所得吗
  • 小规模纳税人做账要做增值税吗
  • 社保缴费是当月扣当月的吗
  • 租金营改增
  • 2019发票认证期限新规
  • 业务员报销差旅费会计分录怎么做
  • 向银行办理托收手续记什么科目
  • 一般纳税人劳务费税率是13还是6
  • 转登记小规模纳税人转让固定资产
  • 转让专利属于什么分配
  • 红字发票做进项转出还是红字负数
  • 无法收回的应收款计入什么科目
  • 房地产销售土地增值税纳税人减免申请核准表
  • 事业单位收个人部分社保怎么入账
  • 哪些费用应该计税
  • 收到汇票的账务处理
  • 应收账款平均余额公式
  • 多扣社保个人部分怎么做分录
  • 房地产开发企业资质管理规定
  • 所得税汇算后要做账吗
  • 个人房产税征收标准
  • 一般纳税人注销需要多少钱
  • 收到的发票开票人是管理员,这样可以吗?
  • 自然人独资企业和一人有限责任公司
  • 工会票据电子化管理系统如何领发票
  • 善意取得虚开增值税专用发票追征期
  • 鸿蒙os程序
  • 单位支付经济补偿金的情形
  • 债券利息收入征税吗
  • 赠送客户的商品怎么入账
  • 苹果系统公测版
  • 递延负债减递延资产
  • 纳税人逾期申报
  • 房地产企业预缴增值税如何申报
  • 不动产售后回租如何处理
  • nginx静态文件服务器
  • 股权投资收益需要缴纳企业所得税吗
  • 为庆祝中秋而摆放的东西
  • 企业怎么知道增值税的核定方法
  • 借款合同印花税怎么做账
  • php框架yii
  • php删除txt指定内容
  • 这一年我学会了
  • 六自由度机器人简图
  • 员工宿舍的物业费要交个税吗
  • 库存现金借方发生额怎么计算
  • 有赞微小店认证麻烦
  • csv文件导入到pycharm时报错
  • sqlite3 top的查询及limit语法介绍
  • 电子发票如何作废,具体怎么操作
  • MySQL中create table as 与like的区别分析
  • 公司进项抵税
  • 金融企业里面的债务
  • 税控服务费如何入账
  • 挂靠单位无理要求提供增值税发票怎么办?
  • 单位内部食堂怎么举报
  • 出纳建账账户名称怎么写
  • mysql中数据表的关联关系有哪三种?
  • 隔空传送怎样使用苹果
  • windows server 2003 sp2密钥
  • win8windows设置在哪里
  • centos占用内存高
  • windows7开机后网络标志转圈
  • win7取消ch
  • win8内存管理
  • windows8任务管理器在哪
  • win7操作系统的主要功能
  • opengl数据类型
  • node.js 作用
  • 批处理脚本怎么写
  • 安卓handler使用
  • nodejs重命名文件
  • 百度坐标转换成WGS84坐标
  • [置顶]游戏名:chivalry2
  • 税务举报偷税漏税电话
  • 企业如何在网上申请缴税三方协议
  • 税局退回多交的增值税的账务处理
  • 淘宝要补偿怎么回复
  • 地税收社保
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设