cocos2d-x v2 和 v3 对照手册

cocos2d-x v2 和 v3 对照手册,第1张

概述本文转载自 zrong’s blog 原文地址:http://zengrong.net/post/2193.htm 2015-05-04 更新: 加入 OpenGL 和 MenuItem 的相关变化。 本文的内容来自于对其它几篇文章的翻译、修改和合成,同时,我也会不断增加自己的内容。 下面这部分内容来自对这篇文章的翻译:cocos2d-x v2 to v3 mapping guide 但这篇文章有

本文转载自 zrong’s blog
原文地址:http://zengrong.net/post/2193.htm

2015-05-04 更新: 加入 OpenGL 和 MenuItem 的相关变化。

本文的内容来自于对其它几篇文章的翻译、修改和合成,同时,我也会不断增加自己的内容。

下面这部分内容来自对这篇文章的翻译:cocos2d-x v2 to v3 mapping guide

但这篇文章有一些老了,还有一些内容已经在 cocos2d-x 3.3 中过时。因此,我并没有进行完全对照翻译。对原文中的错误,我也进行了一些修改。

我的新项目开始使用 cocos2d-x v3 。cocos2d-x v3 和 v2 相比有非常大的改变。我把踩过的坑列在下面,以方便后来之人。

cocos2d-x 常用类名改变

下面的表格中的类名的转换方式主要是直接删除了 CC 前缀。

@H_404_34@
# v2 v3
1 CCAction Action
2 CCPoint Point
3 CCAnimation Animation
4 CCSprite Sprite
5 cclabel Label
6 Ccmenu Menu
7 CCObject Ref
8 CCNode Node
9 CCScene Scene
10 cclayer Layer
11 CCSpriteBatchNoe SpriteBatchNode
12 CCTMXTiledMap TMXTiledMap
cocos2d-x 类名改变

下面表格中的类名的转换就比较大了。

@H_404_34@
# v2 v3
1 CCDictionary ValueMap
2 CCArray ValueVector
3 CCString Value
CCString 用法改变

之前:

:::C++CCString* str = CCString::createWithFormat("%s.png","picture");

现在:

:::C++std::string str = StringUtils::format("%s.png","picture");
CCDictinoary 用法改变

之前:

:::C++CCDictionary* dict = CCDictionary::createWithContentsOffile("name.pList");CCArray* arr = (CCArray*) data->objectForKey("Levels");

现在:

:::C++std::string path = fileUtils::getInstance()->fullPathForfilename("name.pList");ValueMap dict = fileUtils::getInstance()->getValueMapFromfile(path);ValueVector arrLevels = data.at("Levels").asValueVector();
CCArray 用法改变

这里就是 C++ vector 容器的标准用法了。

@H_404_34@
# v2 v3
1 CCArray* Sprites; Vector
触摸用法改变 @H_404_34@
# v2 v3
1 cctouchBegan ontouchBegan
2 cctouchmoved ontouchmoved
3 cctouchended ontouchended
单例类用法改变 @H_404_34@
# v2 v3
1 CCEGLVIEw::sharedOpenGLVIEw(); Director::getInstance()->getopenGLVIEw();
2 CCTextureCache::sharedTextureCache(); Director::getInstance()->getTextureCache();
3 CCNotificationCenter::sharednotificationCenter(); Director::getInstance()->getEventdispatcher();
CCTime 用法改变

CCTime cocos2d-x v3 中已经被删除了。

@H_404_34@
# v2 v3
1 cc_timeval timeval
2 CCTime::gettimeofdayCocos2d gettimeofday
3 CCTime::timesubCocos2d getTimeDiffenceMS

范例:

:::C++static inline float getTimeDifferenceMS(timeval& start,timeval& end){    return ((((end.tv_sec - start.tv_sec)*1000.0f + end.tv_usec) - start.tv_usec) / 1000.0f);}

下面的内容为 zrong 原创。

@H_404_353@OpenGL 的用法变化 @H_404_34@
# v2 v3
1 CCGLProgram GLProgram
3 kCCUniformPMatrix_s GLProgram::UNIFORM_name_P_MATRIX
4 kCCUniformMVMatrix_s GLProgram::UNIFORM_name_MV_MATRIX
5 kCCUniformMVPMatrix_s GLProgram::UNIFORM_name_MVP_MATRIX
6 kCCUniformTime_s GLProgram::UNIFORM_name_TIME
7 kCCUniformSinTime_s GLProgram::UNIFORM_name_SIN_TIME
8 kCCUniformCosTime_s GLProgram::UNIFORM_name_COS_TIME
9 kCCUniformRandom01_s GLProgram::UNIFORM_name_RANDOM01
10 kCCUniformSampler_s GLProgram::UNIFORM_name_SAMPLER0
11 kCCUniformAlphaTestValue GLProgram::UNIFORM_name_Alpha_TEST_VALUE
12 kCCAttributenamecolor GLProgram::ATTRIBUTE_name_color
13 kCCAttributenameposition GLProgram::ATTRIBUTE_name_position
14 kCCAttributenameTexCoord GLProgram::ATTRIBUTE_name_TEX_COORD

MenuItem 的用法变化

以前我写过一篇 Cocos2d-x中的事件调用方式汇总 ,其中介绍了 cocos2d-x 中的回调函数。而在 v3 版本中,这些回调函数已经完全废弃了。

在 cocos2d-x v3 中,使用的是 C++11 提供的标准的 std::bind 功能来实现回调。

让我们看看 base/ccMacros.h 中的几个宏:

// new callbacks based on C++11#define CC_CALLBACK_0(__selector__,__target__,...) std::bind(&__selector__,##__VA_ARGS__)#define CC_CALLBACK_1(__selector__,std::placeholders::_1,##__VA_ARGS__)#define CC_CALLBACK_2(__selector__,std::placeholders::_2,##__VA_ARGS__)#define CC_CALLBACK_3(__selector__,std::placeholders::_3,##__VA_ARGS__)

所以,对于 cocos2d-x v2 中这样的调用:

cmenuItemImage *item1 = CcmenuItemImage::create(s_pPathB1,s_pPathB2,this,menu_selector(ActionsDemo::backCallback));

在 cocos2d-x v3 中应该是这样的:

MenuItemImage *item1 = MenuItemImage::create(s_pPathB1,CC_CALLBACK_1(ActionsDemo::backCallback,this));
总结

以上是内存溢出为你收集整理的cocos2d-x v2 和 v3 对照手册全部内容,希望文章能够帮你解决cocos2d-x v2 和 v3 对照手册所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1075521.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存