大佬教程收集整理的这篇文章主要介绍了cocos2d-x v2 和 v3 对照手册,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
2015-05-04 更新: 加入 OpenGL 和 MenuItem 的相关变化。
本文的内容来自于对其它几篇文章的翻译、修改和合成,同时,我也会不断增加自己的内容。
下面这部分内容来自对这篇文章的翻译:cocos2d-x v2 to v3 mapping guide
但这篇文章有一些老了,还有一些内容已经在 cocos2d-x 3.3 中过时。因此,我并没有进行完全对照翻译。对原文中的错误,我也进行了一些修改。
我的新项目开始使用 cocos2d-x v3 。cocos2d-x v3 和 v2 相比有非常大的改变。我把踩过的坑列在下面,以方便后来之人。
下面的表格中的类名的转换方式主要是直接删除了 CC 前缀。
# | v2 | v3 |
---|---|---|
1 | CCAction | Action |
2 | CCPoint | Point |
3 | CCAnimation | Animation |
4 | CCSprite | Sprite |
5 | CCLabel | Label |
6 | CCMenu | @H_909_33@menu|
7 | CCObject | Ref |
8 | CCNode | Node |
9 | CCScene | Scene |
10 | CCLayer | Layer |
11 | CCSpriteBatchNoe | SpriteBatchNode |
12 | CCTMXTiledMap | TMXTiledMap |
下面表格中的类名的转换就比较大了。
# | v2 | v3 |
---|---|---|
1 | CCDictionary | ValueMap |
2 | CCArray | ValueVector |
3 | CCString | Value |
之前:
:::C++ CCString* str = CCString::createWithFormat("%s.png","picture");
现在:
:::C++ std::string str = StringUtils::format("%s.png","picture");
之前:
:::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();
这里就是 C++ vector 容器的标准用法了。
# | v2 | v3 |
---|---|---|
1 | CCArray* sprites; | Vector |
# | v2 | v3 |
---|---|---|
1 | ccTouchBegan | onTouchBegan |
2 | ccTouchMoved | onTouchMoved |
3 | ccTouchEnded | onTouchEnded |
# | v2 | v3 |
---|---|---|
1 | CCEGLView::sharedopenGLView(); | Director::geTinstance()->getOpenGLView(); |
2 | CCTextureCache::sharedTextureCache(); | Director::geTinstance()->getTextureCache(); |
3 | CCNotificationCenter::sharedNotificationCenter(); | Director::geTinstance()->getEventDispatcher(); |
Cctime cocos2d-x v3 中已经被删除了。
# | 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 原创。
# | 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 |
以前我写过一篇 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 中应该是这样的:
@H_480_484@menuItemImage *item1 = MenuItemImage::create(s_pPathB1,CC_CALLBACK_1(ActionsDemo::BACkCallBACk,this));以上是大佬教程为你收集整理的cocos2d-x v2 和 v3 对照手册全部内容,希望文章能够帮你解决cocos2d-x v2 和 v3 对照手册所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。