天天看点

[cocos2d-x]cocos2dx与cocos2d的一些变化

cocos2dx v2.0版本发布一段时间了,现在最新版本是 cocos2d-2.0-rc2-x-2.0.1 ;这段时间Himi对2.x的更新版也有关注,也尝试使用过,发现不少地方都有改动,对于Himi最新项目快到尾声的考虑,所以也没有更新引擎到最新。那么今天开始Himi将陆续使用最新v2.x版本的一些东东,同步更新一些经常使用的改动以及值得注意的地方发博文出来与大家共享;

在之前我们使用cocos2dx 1.x版本中,我们都知道,创建一个CCObject类,都是类名然后::类名去除CC这个规律来创建和初始化,但是这一条在Cocos2dx 2.x版本就不行了,在cocos2dx  2.x版本中初始化和创建类基本都是 create 关键字开头创建。

首先我们来看第一个改动:  CCLayer初始化

自定义Layer,类名:World

1

2

3

4

5

6

<code>.h中:</code>

<code>1.x版本Layer函数</code>

<code>LAYER_NODE_FUNC(World);</code>

<code>2.x版本Layer函数</code>

<code>LAYER_CREATE_FUNC(World);</code>

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<code>.cpp中:</code>

<code>1.x版本的重写函数:</code>

<code>CCScene* World::scene()</code>

<code>{</code>

<code>    </code><code>CCScene *scene = CCScene::node();</code>

<code>    </code><code>World *layer = World::node();</code>

<code>    </code><code>scene-&gt;addChild(layer);</code>

<code>    </code><code>return</code> <code>scene;</code>

<code>}</code>

<code>2.x版本的重写函数:</code>

<code>    </code><code>CCScene *scene = CCScene::create();</code>

<code>    </code><code>World *layer = World::create();</code>

然后我们看第二个常用的CCArray的初始化:

<code>1.</code><code>x版本的CCArray创建:</code>

<code>CCArray</code><code>*</code><code>array</code><code>=</code> <code>CCArray</code><code>:</code><code>:</code><code>array</code><code>(</code><code>)</code><code>;</code>

<code>2.</code><code>x版本的CCArray创建: </code>

<code>CCArray</code><code>*</code><code>array</code><code>=</code> <code>CCArray</code><code>:</code><code>:</code><code>create</code><code>(</code><code>)</code><code>;</code>

第三个我们看文件路径相关CCFileUtils函数使用:

1.x版本的使用:   

const char* fullpath = cocos2d::CCFileUtils::fullPathFromRelativePath(patha.c_str());  

2.x版本的使用:  

const char* fullpath = cocos2d::CCFileUtils::sharedFileUtils()-&gt;fullPathFromRelativePath(patha.c_str());  

第四个精灵的创建:  

1.x中精灵的创建:  

 CCSprite *sp = CCSprite::spriteWithFile("himi.png");  

2.x中精灵的创建:  

 CCSprite *sp = CCSprite::create("himi.png");  

第五个注册触屏事件监听:

1.x中注册:  

CCTouchDispatcher::sharedDispatcher()-&gt;addTargetedDelegate(this, 0, false);  

2.x中注册:  

CCDirector::sharedDirector()-&gt;getTouchDispatcher()-&gt;addTargetedDelegate(this, 0, false);  

第六个粒子相关

1.x粒子创建和设置自动释放设置  

CCParticleSystem *tempSystem =  CCParticleSystem::particleWithFile("himi.plist");  

        tempSystem-&gt;setIsAutoRemoveOnFinish(true);  

2.x粒子创建和设置自动释放设置          

CCParticleSystem *tempSystem =  CCParticleSystemQuad::create("himi.plist");  

        tempSystem-&gt;setAutoRemoveOnFinish(true);&lt;span style="color:#ff0000;"&gt;  

&lt;/span&gt;  

第七个:CCFileData 类去除了:

1.x的CCFileData的使用:  

cocos2d::CCFileData fileDataClip(const char *pszFileName, const char *pszMode);  

2.x中CCFileData被删除,直接使用如下函数即可代替:  

CCFileUtils::sharedFileUtils()-&gt;getFileData(const char *pszFileName, const char *pszMode, unsigned long *pSize)  

第八个 Action 动作使用与创建:

1.x动作的创建与使用:  

this-&gt;runAction(CCSequence::actions(  

                                            CCMoveTo::actionWithDuration(ccpDistance(this-&gt;getPosition(), target) / velocity,  

                                                                         target),  

                                            CCCallFunc::actionWithTarget(this, callfunc_selector(Player::removeTarget))  

                                            ,NULL));  

2.x的动作创建和使用:        

this-&gt;runAction(CCSequence::create(  

                                           CCMoveTo::create(ccpDistance(this-&gt;getPosition(), target) / velocity,  

                                                            target),  

                                           CCCallFunc::create(this, callfunc_selector(Player::removeTarget))  

                                           ,NULL));  

其实以上这几个例子比较有代表性了,其他的一些区分我想大家也能找到不一定的规律。那么本篇对于cocos2dx v2.0版本的差异就讲述到这,后续如果Himi还发现比较重点区分的地方也一定会博文分享出来的。   

本文转蓬莱仙羽51CTO博客,原文链接:http://blog.51cto.com/dingxiaowei/1366263,如需转载请自行联系原作者

继续阅读