稍过段时间,打算把拇指接龙游戏教程案例修改为当前最新的Cocos Studio 2.0.2版本(+Cocos2d-x 3.x)。所以,打算先搜索一部分资料以便加快速度。下面引文来自于http://cn.cocos2d-x.org/tutorial/show?id=1956。



本文大部分内容来自对这篇文章的翻译《Cocos2d-x v2 to v3 mapping guide》。

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


Cocos2d-x v3和v2相比有非常大的改变。我把踩过的坑列在下面,以方便后来之人。


Cocos2d-x 常用类名改变

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

Cocos2d-x v2和v3对照手册_第1张图片

Cocos2d-x 类名改变

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

Cocos2d-x v2和v3对照手册_第2张图片

CCString 用法改变

之前:

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

现在:

1
std::string str = StringUtils::format( "%s.png" , "picture" );


CCDictinoary 用法改变

之前:

1
2
CCDictionary* dict = CCDictionary::createWithContentsOfFile( "name.plist" );
CCArray* arr = (CCArray*) data->objectForKey( "Levels" );

现在:

1
2
3
std::string path = FileUtils::getInstance()->fullPathForFilename( "name.plist" );
ValueMap dict = FileUtils::getInstance()->getValueMapFromFile(path);
ValueVector arrLevels = data.at( "Levels" ).asValueVector();


CCArray 用法改变

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

Cocos2d-x v2和v3对照手册_第3张图片

下面的信息来自这里。


触摸用法改变

Cocos2d-x v2和v3对照手册_第4张图片

单例类用法改变

Cocos2d-x v2和v3对照手册_第5张图片

CCTime 用法改变

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

Cocos2d-x v2和v3对照手册_第6张图片

范例:

1
2
3
4
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);
}