最近在帮朋友移植一个 IOS 上的 cocos2d 游戏到安卓平台,CPP 的代码量大致在一万行左右,说大也不大,但也着实不小。移植了几天,吐槽一把:
由于现在还没有这样的自动化工具,所以很大一部分还是需要靠我们人工来转换,但这并不表明我们不能偷一些懒。对于一些可以自动化做掉的,当然直接替换掉,比如:
- 将 [self 替换成 this-> 是肯定没有错的。
- 还可以把 ]; 替换成 );
- - (void) 替换成 void CLASSNAME:: 基本上也是不会大错的,当然了,如果Objective-C的几个类的实现都放在一个文件里面,那确实会出现问题。
- CGGloat可以被typedef成float,或者索性全部替换成float
- Objective-C 里面对于NSMutableArray的遍历写起代码来是很方便的,但是在 cocos2d-x 中就不是了,对于 CCArray的遍历比较麻烦一些,基本上这个样子:
CCObject *pObj = NULL;
CCARRAY_FOREACH(array, pObj) {
CCSprite *sprite = (CCSprite*)pObj;
...
}
cocos2d-x 中没有直接对应的NSNumber类,基本上你可以使用CCString然后调用它的floatValue()啊之类的函数。但有时候还是不够直接。因为 Objective-C 中可以使用id这个类型,可以使用isClassOf() 等这样的动态查询的函数,这个时候直接移植过来就有些麻烦了。要么一股脑全部弄成CCObject,然后运行时调用 C++ 的 dynamic_cast<T>(v) 来做。
总的来说,移植过程还是很直观的,因为 cocos2d-x 和 cocos2d 在 API 的命令上都尽量保持了一致。
后记:
自己在前面写了怎么将 cocos2d 改成 cocos2d-x 的经历,现在将一些默认的操作完善成了一个简单的工具,注意这个只是半自动的工具,还是有很多未完善的功能。这个工具并不顾及 objective-c 的语法,如果我们能理解 objective-c 的语法,那么就可以更加好的进行转换。这个就当成下一步的目标好了。:)
代码的仓库在github的
这里
欢迎大家集思广益,贡献代码 :-)
分享到:
相关推荐
将cocos2d-x移植到其他平台(例如:将其移植到Android ARM64或Tizen等) 生成所有第3方库的DEBUG版本 笔记: 我们使用MacOSX为iOS,Android,Mac和Tizen构建所有静态库。 我们使用Ubuntu构建Linux的所有静态库。...
Cocos2d-x将win32移植到ios进行编译
cocos2d-iphone~cocos2d-html5移植之旅
Cocos2d-X通过对众多第三方开源项目的整合实现了对Cocos2d API的重写,这样对于熟悉Objective-C和C++的开发者来讲,就可以快速地把原来iOS平台的游戏移植到Android或其他平台。
Cocos2d-x环境搭建及Android\Ios平台移植
全书内容涵盖了Cocos2d-x的核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、数据交换格式、内存管理、性能优化、平台移植、程序代码管理、三大应用商店发布产品等。本书共29章,按内容结构可分为六篇...
第1章 Cocos2D-X引擎的介绍 1 1.1 何为游戏引擎 1 1.1.1 游戏的核心—引擎 1 1.1.2 引擎的特点 2 1.1.3 知名的引擎介绍 4 1.1.4 引擎的分类 5 1.2 Cocos2D-X引擎的来历 8 1.3 引擎的版本 9 1.4 下载与安装 10 1.5 ...
第4~9 章讲解Cocos2d-x 的常见技术,包括基础类、动画、触摸、GUI 控件及多分辨率适配等;第10~12 章讲解Cocos2d-x 中的网络、文件、瓦片地图、物理引擎等知识;第13~15 章讲解Cocos2d-x 中的Lua 脚本语言开发、...
cocos2d-x权威指南 例程 萝莉快跑 源码 2.14 代码整理,可编译。没错误。修正了2.0.1中的。移植可用 ios ,android ,win
游戏引擎移植者现身讲解:《在iOS平台上用Cocos2D做开发》 | iOS独立...2011年参与Cocos2d-x到Windows phone平台的移植,贡献了大部分核心功能,对Coco2D游戏引擎有深刻的了解,现从事iOS开发。热爱开源,喜欢交流。
Cocos2D-X是全球知名的开源跨平台游戏引擎,易学易用,目前已经支持 iOS、Android、Windows 桌面、Mac OS X、Linux、BlackBerry、Windows Phone 等平台。Cocos2d-JS统一了使用JS进行开发的开发体验,将HTML5引擎与...
cocos2s-x游戏defencer,郑州boy做的一个cocos2d-x游戏,自己移植到ios上。
cocos2d-x是cocos2d的C++移植版,通过c++的重新编写,使得cocos2d可以用在不同的平台上。支持多平台的 2D 手机游戏引擎,使用 C++ 开发,基于OpenGL ES,基于Cocos2d-iphone,支持 WOPhone, iOS 4.1, Android 2.1 及...
1.1 选择iphone版cocos2d的理由 1.1.1 免费 1.1.2 开源 1.1.3 objective-c 1.1.4 2d游戏引擎 1.1.5 物理引擎 1.1.6 技术难度较低 1.1.7 依然需要编程 1.1.8 超棒的cocos2d社区 1.2 注意事项 ...
软体物理引擎JellyPhysics ios下的移植 感谢物理引擎的作者walaber 该物理引擎应该是类似jellycar或者rockrock游戏的物理基础 显示使用cocos2d游戏引擎 opengl es 1.0渲染环境 实现 c++到oc的封装 图形渲染 ...
使用cocos2d-x移植了《Beginning Android Games》上的贪食蛇的源码,在Xcode 3.2.5和cocos2d-1.0.1-x-0.10.0下编译通过。可以在iphone模拟器里运行。
闪亮八角机器人使用 C++ 和 Cocos2d-X 的 GODPAPER 使用C++重写棋盘游戏引擎( ),使用Cocos2d-X实现UI。 参考: 教纸: : 简短的介绍是一个简单易用的 C++,它提供游戏 AI、游戏 UI 以及对游戏引擎管理和配置的...