[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

.h中:

1.x版本Layer函数

LAYER_NODE_FUNC(World);

 

2.x版本Layer函数

LAYER_CREATE_FUNC(World);


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

.cpp中:

1.x版本的重写函数:

 

CCScene*
World::scene()

{

    CCScene
*scene = CCScene::node();

    World
*layer = World::node();

    scene->addChild(layer);

    return

scene;

}

 

2.x版本的重写函数:

 

CCScene*
World::scene()

{

    CCScene
*scene = CCScene::create();

    World
*layer = World::create();

    scene->addChild(layer);

    return

scene;

}

 

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


1

2

3

4

5

1.x版本的CCArray创建:

CCArray*array
=

CCArray
::array();

 

2.x版本的CCArray创建: 

CCArray*array
=

CCArray
::create();

 

 

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

[cpp] view
plain
copy

  1. 1.x版本的使用:   
  2. const char* fullpath = cocos2d::CCFileUtils::fullPathFromRelativePath(patha.c_str());  
  3.    
  4. 2.x版本的使用:  
  5. const char* fullpath = cocos2d::CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(patha.c_str());  

第四个精灵的创建:
 

[cpp] view
plain
copy

  1. 1.x中精灵的创建:  
  2.  CCSprite *sp = CCSprite::spriteWithFile("himi.png");  
  3. 2.x中精灵的创建:  
  4.  CCSprite *sp = CCSprite::create("himi.png");  

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

[cpp] view
plain
copy

  1. 1.x中注册:  
  2. CCTouchDispatcher::sharedDispatcher()->addTargetedDelegate(this, 0, false);  
  3.    
  4. 2.x中注册:  
  5. CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, false);  

第六个粒子相关

[cpp] view
plain
copy

  1. 1.x粒子创建和设置自动释放设置  
  2. CCParticleSystem *tempSystem =  CCParticleSystem::particleWithFile("himi.plist");  
  3.         tempSystem->setIsAutoRemoveOnFinish(true);  
  4.            
  5. 2.x粒子创建和设置自动释放设置          
  6. CCParticleSystem *tempSystem =  CCParticleSystemQuad::create("himi.plist");  
  7.         tempSystem->setAutoRemoveOnFinish(true);<span style="color:#ff0000;">  
  8. </span>  

第七个:CCFileData
类去除了:

[cpp] view
plain
copy

  1. 1.x的CCFileData的使用:  
  2.         
  3. cocos2d::CCFileData fileDataClip(const char *pszFileName, const char *pszMode);  
  4.     
  5. 2.x中CCFileData被删除,直接使用如下函数即可代替:  
  6. CCFileUtils::sharedFileUtils()->getFileData(const char *pszFileName, const char *pszMode, unsigned long *pSize)  

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

[cpp] view
plain
copy

  1. 1.x动作的创建与使用:  
  2. this->runAction(CCSequence::actions(  
  3.                                             CCMoveTo::actionWithDuration(ccpDistance(this->getPosition(), target) / velocity,  
  4.                                                                          target),  
  5.                                             CCCallFunc::actionWithTarget(this, callfunc_selector(Player::removeTarget))  
  6.                                             ,NULL));  
  7.     
  8. 2.x的动作创建和使用:        
  9. this->runAction(CCSequence::create(  
  10.                                            CCMoveTo::create(ccpDistance(this->getPosition(), target) / velocity,  
  11.                                                             target),  
  12.                                            CCCallFunc::create(this, callfunc_selector(Player::removeTarget))  
  13.                                            ,NULL));  

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

时间: 2024-09-28 12:25:17

[cocos2d-x]cocos2dx与cocos2d的一些变化的相关文章

[cocos2d-x]cocos2d和cocos2d-x的一些通用性

不得不说要说总结,因为Cocos2d-X的代码和Cocos2d-iphone两个引擎除了语言不同外(Cocos2d-X使用C++,Cocos2d-iphone使用Object-C)可以说没有其他差异.         下面举例对比几段代码来说明吧:        创建添加一个精灵代码对比:               使用Cocos2d-X:  view plain //---------Cocos2d-X代码部分--      //创建一个精灵      CCSprite *spriteTem

Cocos2D-X入门(15)实现拖尾效果

游戏中的刀光剑影 好的游戏效果必不可少,cocos2D中用CCMotionStreak实现这样的拖尾效果. streak=CCMotionStreak::create(1, 16, 16, ccc3(255, 255 ,0), "fire.png"); streak->setPosition(ccp(240,160)); this->addChild(streak, 5); 在触摸事件中更新streak的位置,让其跟随鼠标. bool ZDScene::ccTouchBeg

Cocos2D-X入门(1) 制作一个动态的精灵

原理: Cocos2D中有个导演控制整个游戏流程,导演将场景添加到屏幕上,场景中有各种各样的演员. 先通过显示一张图片来看看Cocos2D游戏的流程: AppDelegate.cpp bool AppDelegate::applicationDidFinishLaunching() { // 初始化导演 CCDirector *pDirector = CCDirector::sharedDirector(); pDirector->setOpenGLView(CCEGLView::sharedO

《Cocos2D-x权威指南》——1.1 什么是Cocos2D

1.1 什么是Cocos2D 大家认识并且熟悉Cocos2D,应该是从App Store上几款非常火爆的游戏开始的,但是实际上Cocos2D引擎最早并非是为iOS(iPhone Operating System,苹果移动设备操作系统)设计的.最早它是一款用Python语言开发的游戏引擎,后来使用Objective-C被移植为iOS平台的Cocos2D- iPhone版本.不仅如此,Cocos2D被移植成各个版本,形成了庞大的Cocos2D家族.1.1.1 Cocos2D的特点 Cocos2D是一

【COCOS2D-HTML5 开发之一】新建HTML5项目及简单阐述与COCOS2D/X引擎关系

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/cocos2d-html5/1463.html             真的是有一段时间没写博了,这段时间呢,发生的事情真的挺多,另外自己呢也闲来做了一些自己的喜欢的东西,主要做的还是基于Mac系统的Cocoa框架的各种编辑器吧.(对了,今年初也出了自己第二本书<iOS游戏编程之从零开始-Cocos2d-x与cocos2d引擎游戏开发>)

Cocosd2d实例教程(三) Cocos2d瓦片地图的导入

上一节讲了如何使用Tiled制作瓦片地图,下面讲一下如何将地图导入游戏中. 第一步:将生成的文件导入resource中,如图,分别为地图和图片集 第二步:在HelloWorldLayer.h中修改代码,有一定基础的人还是比较好理解的. #import <GameKit/GameKit.h> // When you import this file, you import all the cocos2d classes #import "cocos2d.h" // Hello

转 Cocos2d-x3.0模版容器详解之三:cocos2d::Value

1.概述 版本: v3.0 beta 语言: C++ 定义在 "COCOS2DX_ROOT/cocos/base" 路径下的 "CCValue.h" 的头文件中. ? 1 class Value; unioncocos2d::Valie 是一个包含了很多原生类型(int,float,double,bool,unsigned char,char* 和 std::string)外加 std::vector<Value>, std::unordered_map

cocos2d::Vector

v3.0 beta加入 定义在"COCOS2DX_ROOT/cocos/base"的"CCVector.h"头文件中. template<class T>class CC_DLL Vector; cocos2d::Vector<T>是一个封装好的能动态增长顺序访问的容器. cocos2d::Vector<T>中的元素是按序存取的,它的低层实现数据结构是标准模版库中的标准顺序容器std::vector. 在Cocos2d-x v3.

Cocos2d-x碰撞检查与消灭的实现

#ifndef __HELLOWORLD_SCENE_H__   #define __HELLOWORLD_SCENE_H__      #include "cocos2d.h"   using namespace cocos2d;      class HelloWorld : public cocos2d::CCLayerColor   {   public:       // Method 'init' in cocos2d-x returns bool, instead of