本站文章均为 李华明Himi 原创,转载务必在明显处注明:

转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/iphone-cocos2dx/703.html

          ☞ 点击订阅 ☜
 本博客最新动态!及时将最新博文通知您!

本章讲解的是几个细节问题,但是此细节有可能导致一系列问题,那么今天Himi与童鞋们共同交流分享下;

一.   对于CCSprite 与 CCNode  是都很常用的类,那么基础使用方法这里不赘述,但是CCSprite 与 CCNode在进行添加子类时可能有些童鞋遇到过问题,下面我们详细看下:

  1. CCSprite* sp = CCSprite::spriteWithFile("Icon.png");
  2. sp->setPosition(ccp(200,200));
  3. sp->addChild(CCSprite::spriteWithFile("Icon.png"));
  4. this->addChild(sp);
  5. //this 是个Layer

索引图片名直接创建个精灵A,然后A add 子类精灵,最后将A添加Layer中,没说的,eazy,不解释;

首先给出代码段1:

那么再看下面代码段2:

  1. CCSprite* sp = new CCSprite();
  2. sp->setPosition(ccp(200,200));
  3. sp->addChild(CCSprite::spriteWithFile("Icon.png"));
  4. this->addChild(sp);
  5. //this 是个Layer

顺序和功能跟代码段1一样,但当你运行后发现程序异常!原因是sp 中并没有真正的初始化,而仅仅简单的申请了一块内存而已;

解决方案:仍然调用CCSprite公开的几个构造函数即可;

  1. CCSprite* sp = new CCSprite();
  2. //CCSprite构造下
  3. sp->initWithFile("Icon.png");
  4. sp->setPosition(ccp(200,200));
  5. sp->addChild(CCSprite::spriteWithFile("Icon.png"));
  6. this->addChild(sp);

此问题比较容易理解,但是当我们出现以上问题时,肯定是想不想创建一个精灵时传入资源,所以会使用new方式来使用,那么如果你想创建一个没有贴图的精灵可以按照如下方式实现:

  1. CCSprite* sp = (CCSprite*)CCNode::node();
  2. sp->setPosition(ccp(200,200));
  3. sp->addChild(CCSprite::spriteWithFile("Icon.png"));
  4. this->addChild(sp);

利用Node::node初始化数据后强转给CCSprite子类即可;话说回来既然如此到不如使用CCNode来的方便?!没错,如果你想封装一个精灵,并往里添加子精灵,那么创建这个精灵如不想使用资源创建,那么推荐使用CCNode,(自定义类型继承CCNode),另一方面如果创建这个精灵可以索引到资源,可以继承CCSprite,没问题;

值得注意的是:

当你自定义A类继承精灵类CCSprite,使用new形式创建A类一个精灵后并addChild子精灵,一般不会造成程序异常,而且正常运行在iOS上,但是当你编译后运行Android上之后会发现精灵都是白色块的情况,如下前后对比图:

iOS运行截图:

编译Android运行截图:

二.  在cocos2dx中使用CCUserDefault的时候要注意,官方微薄也已提示,在当你setStringxxx、setBoolxxx等数据后要调用CCUserDefault的flush()函数,只有当你flush()了,才会将数据以xml格式保存本地App->Documents目录中!

三. 在cocos2dx中使用pvr.ccz格式的图片时候跟cocos2d的使用有一点区别,在cocos2d中加载pvr.ccz的图片资源不用去管大小和尺寸(当然为了兼容老代机器,推荐1024*1024),但是在Cocos2dx中当你的pvr.ccz的资源大小宽高不是正方形的话(2 的N次幂),会在控制台提示警告,并且!虽然程序能正常运行,但是在编译后Android上无法正常显示,是显示图片为白色块!所以这点也要注意;

转载于:https://blog.51cto.com/xiaominghimi/863417

【iOS-cocos2d-X 游戏开发之十一】使用New CCSprite() CCUserDefault要注意!相关推荐

  1. iOS cocos2d 2游戏开发实战(第3版)---你的第一个游戏!

    2019独角兽企业重金招聘Python工程师标准>>> 随着苹果公司不断地创新与发展,新的iPhone 5.iPad 4以及iPad mini产品相继问世,包括iOS与Xcode在内 ...

  2. iOS cocos2d 2游戏开发实战(第3版)

    <iOS cocos2d 2游戏开发实战(第3版)> 基本信息 原书名:Learn cocos2d 2: Game Development for iOS 作者: (美)Steffen I ...

  3. 添加类iOS cocos2d 2游戏开发实战(第3版)

    这两天一直在学习添加类之类的问题,现在正好有机会和大家讨论一下. 第1章 简介 1 1.1 第3版中的新增内容 2 1.2 选择ios版cocos2d的来由 3 1.2.1 收费 3 1.2.2 开源 ...

  4. 【iOS-cocos2d-X 游戏开发之十一】New CCSprite()带来的错误使用CCUserDefault及pvr.ccz在Cocos2dx中要注意!

    本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/iphone-cocos2dx/703.htm ...

  5. 【通知】▁▂▃ Himi 最新著作《iOS游戏编程之从零开始—Cocos2d-x与cocos2d引擎游戏开发》★书籍源码+第4/5/6样章★-免费下载★ ▃▂▁

    2013年新年,Himi的第二本著作:<iOS游戏编程之从零开始-Cocos2d-x与cocos2d引擎游戏开发>一书正式发售: (大家可以到新华书店.淘宝.拍拍.当当.亚马逊等进行购买) ...

  6. 《Cocos2d 跨平台游戏开发指南(第2版)》一1.9 添加动作到精灵

    本节书摘来异步社区<Cocos2d 跨平台游戏开发指南(第2版)>一书中的第1章,第1.9节,作者: [印度]Siddharth Shekar(谢卡)译者: 武传海 责编: 胡俊英,更多章 ...

  7. Cocos2D手机游戏开发之优化篇

    Cocos2D手机游戏开发之优化篇 在这个手机游戏盛行已久的年代,一款产品想要博得更多用户的喜爱就要在细节上做得更加到位.而游戏的优化在这里面起到了非常关键的作用.试想下,一款画面和玩法都深受用户喜欢 ...

  8. 【iOS-Cocos2d游戏开发之十一】使用Box2d物理系统以及在cocos2d框架添加Box2d物理系统lib包的方法...

    为什么80%的码农都做不了架构师?>>>     李华明Himi 原创,转载务必在明显处注明: 转载自 [黑米GameDev街区] 原文链接:  http://www.himigam ...

  9. 【Visual C++】游戏开发五十一 浅墨DirectX教程十九 网格模型进阶之路

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/details/8770426 作者:毛星云(浅墨 ...

  10. 国内平台游戏借苹果iOS爆发:游戏开发产值过亿

    国内平台游戏借苹果爆发 iPhone4.iPad在中国的火爆销售短时间内并不会停止,乔布斯带来的这股"苹果旋风"着实让国人重新认识了什么叫做创意产业.但在所有人将目光聚焦在硬件产品 ...

最新文章

  1. 怀化学院计算机科学张显老师,怀化学院:计算机“华山论剑”获佳绩
  2. php5.4版本不爆错误,PHP5.4以上版本出现的错误:Fatal error: Call-time pass-by-reference has been removed | 严佳冬...
  3. 读《构建之法》的心得体会
  4. FPGA复位激励编写(方法一)
  5. 计算机应用基础形成性考核作业,计算机应用基础形成性考核作业1
  6. Angular ngTemplateOutlet
  7. 谈推荐场景下的对比学习
  8. hadoop python入门_Hadoop Streaming入门
  9. 春节停车难?用 Python 找空车位!
  10. byte[] 转成 bitmap
  11. 呼叫中心IVR系统的介绍
  12. 用vue.js学习es6(四):Symbol类型
  13. 电瓶车续航测试软件,【电驹视频】实测13款电动车真实续航,最靠谱的竟然是它……...
  14. Linux内核入门(二)——用户态向内核态切换
  15. 云科技网络验证源码_黑科技网络验证软件 1.52.0.0免费版
  16. Radasm 配置goasm
  17. 射频下变频器在航空航天和国防领域的应用 ——扩展传统RF监控解决方案的实用方法
  18. Matlab中获取文件夹下所有子文件夹名称操作
  19. win10安装apache环境
  20. 万元怎样保留小数点_如何让数字以万元为单位显示并保留2位小数,且有千位分隔符...

热门文章

  1. android 退出app代码_uniapp退出APP应用(IOS+安卓)
  2. vue组件间的5种传值方式
  3. Python代码加密,将python文件编译成so文件
  4. vue中使用checkbox
  5. vs debug 模式生成的exe 另一台电脑_神秘的 _DEBUG 宏从何处来?
  6. win7系统升服务器版本,WIN7专业版可update补丁,WIN7旗舰版无法update补丁,WSUS服务器是按windows类型还是版本区别updata的还是其他什么方式...
  7. Java - Poi 操作 Excel
  8. 【自动驾驶】28.【右手坐标系】与【右手法则】分析、【右手法则的正方向】 与 【逆时针为正方向】 的分析
  9. Java数据结构和算法(八)——递归
  10. 当你「ping 一下」的时候,你知道它背后的逻辑吗?