`

移植 Cocos2d IOS 到 Cocos2d-x Android 设备上

阅读更多
最近在帮朋友移植一个 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-3rd-party-libs-src:cocos2d-x的依存关系

    将cocos2d-x移植到其他平台(例如:将其移植到Android ARM64或Tizen等) 生成所有第3方库的DEBUG版本 笔记: 我们使用MacOSX为iOS,Android,Mac和Tizen构建所有静态库。 我们使用Ubuntu构建Linux的所有静态库。...

    Cocos2d-x将win32移植到ios.doc

    Cocos2d-x将win32移植到ios进行编译

    cocos2d-iphone~cocos2d-html5移植之旅

    cocos2d-iphone~cocos2d-html5移植之旅

    Cocos2d-X2.2.3

    Cocos2d-X通过对众多第三方开源项目的整合实现了对Cocos2d API的重写,这样对于熟悉Objective-C和C++的开发者来讲,就可以快速地把原来iOS平台的游戏移植到Android或其他平台。

    Cocos2d-x环境搭建及平台移植(Win32\Android\Ios)

    Cocos2d-x环境搭建及Android\Ios平台移植

    Cocos2d-x实战 C++卷,完整扫描版

    全书内容涵盖了Cocos2d-x的核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、数据交换格式、内存管理、性能优化、平台移植、程序代码管理、三大应用商店发布产品等。本书共29章,按内容结构可分为六篇...

    Cocos2D-X游戏开发技术精解

    第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 ...

    Cocos2d-x3.X游戏开发入门精解 [渥瑞达,冉伟,李连胜 编著] 2015年版

    第4~9 章讲解Cocos2d-x 的常见技术,包括基础类、动画、触摸、GUI 控件及多分辨率适配等;第10~12 章讲解Cocos2d-x 中的网络、文件、瓦片地图、物理引擎等知识;第13~15 章讲解Cocos2d-x 中的Lua 脚本语言开发、...

    cocos2d-x权威指南 例程 萝莉快跑 源码 2.14

    cocos2d-x权威指南 例程 萝莉快跑 源码 2.14 代码整理,可编译。没错误。修正了2.0.1中的。移植可用 ios ,android ,win

    iOS DevCamp幻灯片分享:在iOS平台上用Cocos2D做开发 | iOS独立开发者 秦春林

    游戏引擎移植者现身讲解:《在iOS平台上用Cocos2D做开发》 | iOS独立...2011年参与Cocos2d-x到Windows phone平台的移植,贡献了大部分核心功能,对Coco2D游戏引擎有深刻的了解,现从事iOS开发。热爱开源,喜欢交流。

    Cocos2D-X跨平台游戏引擎-其他

    Cocos2D-X是全球知名的开源跨平台游戏引擎,易学易用,目前已经支持 iOS、Android、Windows 桌面、Mac OS X、Linux、BlackBerry、Windows Phone 等平台。Cocos2d-JS统一了使用JS进行开发的开发体验,将HTML5引擎与...

    cocos2s-x游戏defencer

    cocos2s-x游戏defencer,郑州boy做的一个cocos2d-x游戏,自己移植到ios上。

    CocosBuilder

    cocos2d-x是cocos2d的C++移植版,通过c++的重新编写,使得cocos2d可以用在不同的平台上。支持多平台的 2D 手机游戏引擎,使用 C++ 开发,基于OpenGL ES,基于Cocos2d-iphone,支持 WOPhone, iOS 4.1, Android 2.1 及...

    Learn iPhone and iPad cocos2d Game Development

     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 注意事项  ...

    cocos2d+软体物理引擎jellyphysics整合

    软体物理引擎JellyPhysics ios下的移植 感谢物理引擎的作者walaber 该物理引擎应该是类似jellycar或者rockrock游戏的物理基础 显示使用cocos2d游戏引擎 opengl es 1.0渲染环境 实现 c++到oc的封装 图形渲染 ...

    贪食蛇 ios

    使用cocos2d-x移植了《Beginning Android Games》上的贪食蛇的源码,在Xcode 3.2.5和cocos2d-1.0.1-x-0.10.0下编译通过。可以在iphone模拟器里运行。

    shiny-octo-robot:使用 C++ 和 Cocos2d-X 的 GODPAPER

    闪亮八角机器人使用 C++ 和 Cocos2d-X 的 GODPAPER 使用C++重写棋盘游戏引擎( ),使用Cocos2d-X实现UI。 参考: 教纸: : 简短的介绍是一个简单易用的 C++,它提供游戏 AI、游戏 UI 以及对游戏引擎管理和配置的...

Global site tag (gtag.js) - Google Analytics