稍过段时间,打算把拇指接龙游戏教程案例修改为当前最新的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 类名改变
下面表格中的类名的转换就比较大了。
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 容器的标准用法了。
下面的信息来自这里。
触摸用法改变
单例类用法改变
CCTime 用法改变
CCTime在Cocos2d-x v3中已经被删除了。
范例:
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);
}
|