最近在帮朋友移植一个 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-bin-metal-support-22.zip" 文件包含了这些库,以便开发者在需要的时候快速集成到项目中。通常,这些库包括预编译的二进制文件和其他必要的资源,它们能够简化集成过程,避免开发者自行...
"Cocos2d-x环境搭建及平台移植(Win32\Android\Ios)" Cocos2d-x是一个跨平台的游戏引擎,可以在Windows、Android、iOS等平台上运行。下面是关于Cocos2d-x环境搭建及平台移植的详细知识点: 一、搭建Windows开发...
cocos2d-x是一个开源的、跨平台的游戏开发框架,支持iOS、Android、Windows等多个操作系统,采用C++作为主要编程语言,同时提供了Lua和JavaScript的绑定,使得开发者可以灵活选择适合自己的开发方式。 2.14版本是...
《cocos2d-iphone至cocos2d-html5移植之旅》一书正是为那些渴望将iOS应用迁移到HTML5平台的开发者们提供了一个详尽的指南。本文将深度剖析此书中的核心知识点,包括cocos2d-html5引擎的简介、移植的动机、为何选择...
7. **多平台兼容性**:Cocos2d-X的一大优势在于跨平台,所以移植后,游戏应能在iOS、Android、Windows等多个平台上正常运行。这意味着要关注不同平台的差异,如文件系统、输入设备等。 8. **性能监控**:在完成移植...
特别是对于希望同时在 iOS、Android 和其他平台上发布游戏的开发者来说,Cocos2d-x 提供了一套完整的解决方案。 #### 二、跨平台特性详解 ##### 1. 代码重用性 Cocos2d-x 允许开发者使用相同的源代码库为不同的...
将cocos2d-x移植到其他平台(例如:将其移植到Android ARM64或Tizen等) 生成所有第3方库的DEBUG版本 笔记: 我们使用MacOSX为iOS,Android,Mac和Tizen构建所有静态库。 我们使用Ubuntu构建Linux的所有静态库。...
本文主要介绍如何将使用Cocos2d-x开发的Win32应用程序移植到iOS平台上。 首先,移植过程的核心在于理解两个平台之间的差异。Win32是基于Windows操作系统,而iOS则运行在Apple的移动设备上,由Xcode IDE支持。Xcode...
【cocos2d-x版本的对对碰代码】是一个基于Cocos2d-x游戏引擎实现的经典消除类游戏项目,它将原有的Cocos2d版本的对对碰游戏移植到了跨平台的Cocos2d-x框架下。Cocos2d-x是Cocos2d的C++扩展,支持iOS、Android、...
Box2D是cocos2d-android中的重要组成部分,它是世界上最知名的2D物理引擎之一。Box2D允许开发者创建真实感的物理环境,包括重力、碰撞检测、摩擦力和弹力等。通过Box2D,你可以为游戏中的物体定义物理属性,如质量、...
【Cocos2D-x3.10安装】和【Win10中安装VS2015配置Cocos2D-x3.10】涉及到的是在Windows 10系统上搭建Cocos2D-x游戏开发环境的过程,特别是针对Cocos2D-x版本3.10的配置。这个过程相对复杂,因为不仅需要安装Cocos2D-x...
Cocos2d-x是一个开源、跨平台的2D游戏开发工具,它支持iOS、Android、Windows以及更多操作系统,让开发者能够轻松地将游戏移植到多个平台上。 Cocos2d-x的核心特性包括: 1. **渲染系统**:Cocos2d-x采用Sprite和...
- cocos2d-Android:Java版本。 - cocosNet:Mono版本。 - **新Logo与工具**(2009):推出新的cocos2d标志,并推出了首批工具,如Zwoptex和ParticleDesigner。 - **Cocos2d-Mac**(2010):将cocos2d-iPhone移植...
Cocos2d-Android-1是一款基于Cocos2d-x框架的游戏开发工具,专用于创建Android平台上的2D游戏。Cocos2d-x是一个开源、跨平台的游戏开发库,它基于C++,同时提供了Lua和JavaScript的绑定,使得开发者可以使用这三种...
cocos2d-x是一个开源的游戏开发框架,它允许开发者使用C++语言创建跨平台的2D游戏,覆盖了iOS、Android、Windows等多个平台。这个项目旨在为开发者提供一个快速上手cocos2d-x的实例,通过实践学习引擎的使用。 ...
在本文中,我们将深入探讨COCOS2D-X的关键特性、开发流程以及如何在iOS、Android和沃PHONE平台上进行部署。 一、COCOS2D-X框架介绍 COCOS2D-X是基于C++实现的,提供了丰富的API接口,允许开发者使用C++、Lua或...
总之,将预编译的Android版libiconv库集成到Cocos2d-x项目中,可以解决在Android平台上运行时的中文字符编码问题,确保游戏或应用在不同设备上的兼容性和一致性。这一步骤是跨平台开发过程中不可或缺的一部分,特别...
通过对这个闯关类游戏源码的深入学习,你可以了解到cocos2d-x框架的实际运用,理解游戏开发的基本流程,以及如何在实践中解决各种技术问题。这是一个绝佳的学习起点,通过实际操作和调试,你可以逐步提升自己的游戏...
【cocos2d-x捕鱼达人源码IOS ANDORID WP8】是一款基于cocos2d-x游戏引擎开发的跨平台捕鱼游戏,适用于iOS、Android和WP8操作系统。本教程将深入解析这款源码,帮助开发者了解如何利用cocos2d-x进行高级游戏开发。 ...
Cocos2d-x是一个开源的平面游戏开发框架,它基于另一个著名的游戏引擎Cocos2d-iPhone设计。Cocos2d-x继承了Cocos2d系列的核心优势,如易用性、高效性和灵活性。它不仅保留了这些特点,还具备强大的跨平台能力,能够...