- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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();
// 获取
您可能关注的文档
- Americans and the Land高级英语答案.pptx
- Excel VBA programmering.ppt
- 必修4 unit4Workbook listening & reading.ppt
- Methods to Recover Corrupted Files in Microsoft Excel.ppt.ppt
- pe2 Unit2课文.ppt
- Where’my school bagPeriod 1 (1a-1e).ppt
- 必修一_Unit_2_English_around_the_world-Grammar[课件].ppt
- 程序答题总结.doc
- java实现二代身份证信息查询程序.doc
- 编程题1(中创).doc
- 2024年保育员中级工理论考试题库及答案解析.docx
- 国开一体化平台01189《企业信息管理》形考任务(1-4)试题及答案.docx
- 国开一体化平台02951《土地利用规划》形考任务(1-4)试题及答案.docx
- (新版)保育员中级工理论必考题库带答案(夺分金卷).docx
- 2024年克拉玛依职业技术学院单招职业适应性测试题库完美版.docx
- 2024年海南工商职业学院单招职业适应性测试题库带答案.docx
- (新版)保育员(中级)工理论题库附参考答案(突破训练).docx
- 2024年重庆工商职业学院单招职业适应性测试题库及答案1套.docx
- 2024年成都工贸职业技术学院单招职业适应性测试题库汇编.docx
- 2024年湖南化工职业技术学院单招职业适应性测试题库参考答案.docx
文档评论(0)