cocos2d x中文教程

cocos2d x中文教程

ID:37724576

大小:52.00 KB

页数:6页

时间:2019-05-29

cocos2d x中文教程_第1页
cocos2d x中文教程_第2页
cocos2d x中文教程_第3页
cocos2d x中文教程_第4页
cocos2d x中文教程_第5页
资源描述:

《cocos2d x中文教程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、本文由麦可网cocos2d-xhttp://www.microoh.com/course/19收集整理,转载请注明出处。cocos2d-x中文教程:各类构造器cocos2d-x引入自动释放机制后,创建的对象就不需要我们像C++编程那样自己delete了。但是怎么让自己的类也能保持cocos2d-x的风格呢?或者说怎么样才能让自己的类实例也能自动释放。在cocos2d-x里面大量用到了一个叫create()方法(2.1.0版本)。几乎所有的实体类都会用这个create函数来产生实例而不是他们的构造函数。看看CCSprite的create()函数CCSprite*CCSprite::creat

2、e(){CCSprite*pSprite=newCCSprite();//调用构造函数,产生对象if(pSprite&&pSprite->init())//创建对象成功并且其init函数返回true则添加到自动释放池{pSprite->autorelease();returnpSprite;}CC_SAFE_DELETE(pSprite);//安全释放returnNULL;}看到了,create函数里面实质上做了两件事:1.调用构造函数2.init()成功则添加到自动释放池。然后看init()函数,就是自己的一些初始化工作了。对于这个结构大家要非常熟悉,几乎可以说是一个套路。这个二阶段构造

3、用的很多,为了简化代码提高效率,cocos2d-x有个函数宏专门来干这个活:#defineCREATE_FUNC(__TYPE__)static__TYPE__*create(){__TYPE__*pRet=new__TYPE__();if(pRet&&pRet->init()){pRet->autorelease();returnpRet;}else{deletepRet;pRet=NULL;returnNULL;}}这个跟上面CCSprite的create函数很像啊。结构几乎是一样的。所以我们自己的类只需要用这个宏定义,然后实现init()函数就可以了。用

4、的时候直接调用create()函数。比如我写Ship:本文由麦可网cocos2d-xhttp://www.microoh.com/course/19收集整理,转载请注明出处。#ifndef__MoonWarriorsx__Ship__#define__MoonWarriorsx__Ship__#include"cocos2d.h"#include"UnitSprite.h"USING_NS_CC;classShip:publicUnitSprite{private://速度intm_speed;//子弹速度intm_bulletSpeed;//生命值intm_HP;//子弹类型intm_b

5、ulletTypeValue;//子弹威力intm_bulletPowerValue;//是否在投掷炸弹boolm_throwBombing;//是否可被攻击boolm_canBeAttack;boolm_isThrowBomb;intm_zOder;//最大子弹威力intm_maxBulletPowerValue;//出现的初始位置CCPointm_appearPosition;intm_hurtColorLife;boolm_active;public:Ship();~Ship();本文由麦可网cocos2d-xhttp://www.microoh.com/course/19收集整理,

6、转载请注明出处。//被攻击使能voidmakeAttack(CCNode*pSender);//更新virtualvoidupdate(floatdt);//射击voidshoot(floatdt);//初始化virtualboolinit();//被攻击,受伤virtualvoidhurt();//销毁飞船virtualvoiddestroy();//获取生存状态virtualboolisActive();//碰撞矩形virtualCCRectcollideRect();intgetZoder();//构造器CREATE_FUNC(Ship);};#endif/*defined(__Mo

7、onWarriorsx__Ship__)*/然后构造函数只带了一个初始化列表赋初值,没干别的事情。接着实现init()函数,所有初始化工作都在这里实现:boolShip::init(){//superinitfirstif(!CCSprite::init()){returnfalse;}//initlifeCCTexture2D*shipTextureCache=本文由麦可网cocos2d-xhttp://www.mic

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。