1.参考资料Cocos2d-x纹理优化的一些方案  cocos2d-x如何优化内存的应用  iOS和android游戏纹理优化和内存优化(cocos2d-x)

2.加载贴图集纹理

CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("xxx.plist");//系统将xxx.png文件和xxx.plist文件一同加载到内存缓存中,方便以后使用

CCSprite* sprite = CCSprite::createWithSpriteFrameName("image1.png");//系统寻找xxx.plist中的的image1.png的区域信息,在xxx.png中的这块区域截取供使用

注意:

1⃣这样仅仅是打包了图片,降低了游戏资源的内存,但是不能降低渲染率,提高效率,还需CCSpriteBatchNode的帮助

2⃣sprite->setDisplayFrame(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("image2.png"));//切换图片

3⃣打包图片并不是将所有图片都打包就是最好的,因为加载内存的时候,是将整张图片都加载进来,如果该场景不会使用,就会造成内存浪费,所以依据游戏逻辑或者场景来划分打包范围是最好的选择。

4⃣(???????)其实纹理贴图集是将其加载到缓存中,至于这块内存的控制,现在还没有研究透彻,做个标记先

5⃣在未作贴图时使用的sprite->getTextureRect().size 和 sprite->getContentSize()是一样的,因为贴图和内容均是一整块图片,而使用贴图集后,前者是有像素的那部分,后者才是资源文件的大小。

3.使用CCSpriteBatchNode

1⃣关于CCSpriteBatchNode和CCMenuItemSprite的使用问题

为了使用batchNode的特性,所以将要添加MenuItem的selected和unselected精灵率先添加到了batchNode中,但是随后的MenuItem仍然进行添加,所以出现了一个精灵两个父节点的结果,这是不被允许的。

2⃣动画效果使用了CCSpriteFrameCache,在动画播过一次后,总要清空SpriteFrame的数组和frameCache,如下

  sequence = NULL;

//frameCache->removeSpriteFrames();//Error,在使用贴图集加载其他图片之后,这句话就有问题了,因为会将所有的SpriteFrame从缓存中删除,其他再使用就没有了 

  frameCache->removeSpriteFramesFromFile("animation.plist");//Right,动画使用哪个就删除哪个  

frameArray->removeAllObjects();

this->setDisplayFrame(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("images.png"));

cocos2d-x项目过程记录(纹理和内存优化方面)的更多相关文章

  1. cocos2d-x项目过程记录(跨平台iOS和Android)

    (原创作品,欢迎转载,注明出处,谢谢:http://www.cnblogs.com/binxindoudou/admin/EditPosts.aspx?postid=3205249) 1.配置环境,重 ...

  2. cocos2d-x项目过程记录(ios和android设备的适配)

    (原创作品,欢迎转载,注明出处,谢谢:http://www.cnblogs.com/binxindoudou/admin/EditPosts.aspx?postid=3213645) 1.原理分析的博 ...

  3. cocos2d-x项目过程记录(Objective-C转C++)

    (原创作品,欢迎转载,注明出处,谢谢:http://www.cnblogs.com/binxindoudou/admin/EditPosts.aspx?postid=3179335) 1.单例模式中, ...

  4. cocos2d-x项目过程记录(cocos2d-x的新知)

    1.给CCMenuItem带上点击参数(这是CCNode的一个属性) CCMenuItem *item = CCMenuItemSprite::create(unselectedPic, select ...

  5. SQLServer2014内存优化表评测

    SQLServer2014内存优化表评测 分类: SQL内存表2014-06-20 11:49 1619人阅读 评论(11) 收藏 举报 目录(?)[-] SQLServer2014的使用基本要求 内 ...

  6. 将React Native 集成进现有OC项目中(过程记录) 、jsCodeLocation 生成方式总结

    将RN集成到现有OC项目应该是最常见的,特别是已经有OC项目的,不太可能会去专门搞个纯RN的项目.又因为RN不同版本,引用的依赖可能不尽相同,所以特别说明下,本文参考的文档是React Native ...

  7. 转 iOS和android游戏纹理优化和内存优化(cocos2d-x)

    iOS和android游戏纹理优化和内存优化(cocos2d-x) (未完成) 1.2d游戏最占内存的无疑是图片资源. 2.cocos2d-x不同平台读取纹理的机制不同.ios下面使用CGImage, ...

  8. 升级Windows 10 正式版过程记录与经验

    升级Windows 10 正式版过程记录与经验 [多图预警]共50张,约4.6MB 系统概要: 预装Windows 8.1中文版 64位 C盘Users 文件夹已经挪动到D盘,并在原处建立了符号链接. ...

  9. 双系统Ubuntu分区扩容过程记录

    本人电脑上安装了Win10 + Ubuntu 12.04双系统.前段时间因为在Ubuntu上做项目要安装一个比较大的软件,导致Ubuntu根分区的空间不够了.于是,从硬盘又分出来一部分空间,分给Ubu ...

随机推荐

  1. select、poll、epoll用法

    我们先从著名的C10K问题开始探讨,由于早期在网络还不普及的时候,互联网的用户并不是很多,一台服务器同时在线100个用户估计在当时已经算是大型应用了.但是随着互联网的发展,用户群体迅速的扩大,每一个用 ...

  2. js手机站跳转

    var yunzhuanhua_pc_domain = "http://www.域名.com#yht"; //PC站网址var yunzhuanhua_wap_domain = & ...

  3. PHP常用代码段:

    1.PHP加密解密   function encryptDecrypt($key, $string, $decrypt){      if($decrypt){          $decrypted ...

  4. PHP获取客户端和服务器端IP

    客户端的ip变量: $_SERVER['REMOTE_ADDR'] :客户端IP,也有可能是代理IP $_SERVER['HTTP_CLIENT_IP']:代理端的IP,可能存在,也可能伪造 $_SE ...

  5. srand((double)microtime()*1000000)

    分为4个步骤1:执行microtime(),获取当前的微秒数 2:把获取的微秒数转换为double类型 3:再用转换后的数字去乘以1000000 4:给随机数发生器播种,播种数为第三步得出的结果 ra ...

  6. Expression Trees

    Expression Trees 只是想简单说下表达式树 - Expression Trees 目录 简介 Lambda 表达式创建表达式树 API 创建表达式树 解析表达式树 表达式树的永久性 编译 ...

  7. 【转载】之 破解 (【原创】Xenocode Postbuild 2009 加壳破解 (不断更新中...))

    声明 本文转载,感谢原作者dotNetSafe分享 [原创]Xenocode Postbuild 2009 加壳破解 (不断更新中...) http://bbs.pediy.com/showthrea ...

  8. 6.ListView

    Repeater一般只用来展示数据,如果要增删改则用ListView更方便,使用向导(强类型数据)来使用ListView会自动生成很多模板,免去手写模板代码的麻烦,再进行手工调整即可. 首先设定数据源 ...

  9. ASP.NET服务器推送及前后台实时交互

    一:项目需求 页面需要做一个上传Excel功能,并处理Excel中的数据到数据库中 这是一个较为漫长的过程 这时我需要在页面上显示处理进度的提示,给用户一个良好的体验 比如给用户提示“正在上传文档”, ...

  10. Extjs4中tabPanel

    好文章引用:Extjs4 TabPanel例子 感谢原作者...