cocos2d x中文教程.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
cocos2d x中文教程

cocos2d-x中文教程:各类构造器 cocos2d-x引入自动释放机制后,创建的对象就不需要我们像C++编程那样自己delete了。但是怎么让自己的类也能保持cocos2d-x的风格呢?或者说怎么样才能让自己的类实例也能自动释放。 在cocos2d-x里面大量用到了一个叫create()方法(2.1.0版本)。几乎所有的实体类都会用这个create函数来产生实例而不是他们的构造函数。 看看CCSprite的create()函数 CCSprite* CCSprite::create() { CCSprite *pSprite = new CCSprite();//调用构造函数,产生对象 if (pSprite pSprite-init()) // 创建对象成功并且其init函数返回true则添加到自动释放池 { pSprite-autorelease(); return pSprite; } CC_SAFE_DELETE(pSprite); // 安全释放 return NULL; } 看到了,create函数里面实质上做了两件事:1.调用构造函数 2.init()成功则添加到自动释放池。然后看init()函数,就是自己的一些初始化工作了。 对于这个结构大家要非常熟悉,几乎可以说是一个套路。 这个二阶段构造用的很多,为了简化代码提高效率,cocos2d-x有个函数宏专门来干这个活: #define CREATE_FUNC(__TYPE__) \ static __TYPE__* create() \ { \ __TYPE__ *pRet = new __TYPE__(); \ if (pRet pRet-init()) \ { \ pRet-autorelease(); \ return pRet; \ } \ else \ { \ delete pRet; \ pRet = NULL; \ return NULL; \ } \ } 这个跟上面CCSprite的create函数很像啊。结构几乎是一样的。所以我们自己的类只需要用这个宏定义,然后实现init()函数就可以了。用的时候直接调用create()函数。 比如我写Ship: #ifndef __MoonWarriorsx__Ship__ #define __MoonWarriorsx__Ship__ #include cocos2d.h #include UnitSprite.h USING_NS_CC; class Ship : public UnitSprite{ private: // 速度 int m_speed; // 子弹速度 int m_bulletSpeed; // 生命值 int m_HP; // 子弹类型 int m_bulletTypeValue; // 子弹威力 int m_bulletPowerValue; // 是否在投掷炸弹 bool m_throwBombing; // 是否可被攻击 bool m_canBeAttack; bool m_isThrowBomb; int m_zOder; // 最大子弹威力 int m_maxBulletPowerValue; // 出现的初始位置 CCPoint m_appearPosition; int m_hurtColorLife; bool m_active; public: Ship(); ~Ship(); // 被攻击使能 void makeAttack(CCNode *pSender); // 更新 virtual void update(float dt); // 射击 void shoot(float dt); // 初始化 virtual bool init(); // 被攻击,受伤 virtual void hurt(); // 销毁飞船 virtual void destroy(); // 获取

文档评论(0)

mv2323 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档