关于cocos2d-x跨平台的问题,网上搜到的答案一般是来自网上一位大神的微博文章《Cocos2d-x 程序是如何开始运行与结束的》,但是文章描述比较绕,我琢磨了几遍,总结一下自己的思路。
我认为可以用一句话概括:为每个需要适配平台分别实现代码,同一份代码,当编译的时候,判断编译平台,调用与编译平台相关的代码进行编译。
首先个人认为目前跨平台程序一般分为两种:
1.类似JAVA那样,将源代码编译为一种中间代码,然后在各种平台上分别实现了运行环境,理论上一次编译后即可跨平台运行;
2.源代码尽量使用平台无关的代码,平台相关的代码则对应每个平台单独实现,需要跨平台时,则只需要把平台无关的代码与对应平台的相关代码动态组合,理论上一套代码只需要在不同平台上再次编译即可。
对于cocos2d-x,我们知道与平台相关的代码都存放在/cocos/platform/目录下,在CCPlatformConfig.h中声明了与目标平台相关的宏定义,例如:
// win32
#if defined(_WIN32) && defined(_WINDOWS)
#undef CC_TARGET_PLATFORM
#define CC_TARGET_PLATFORM CC_PLATFORM_WIN32
#endif
如果定义了_WIN32和_WINDOWS则将CC_TARGET_PLATFORM重定义为CC_PLATFORM_WIN32
并且,我们都知道AppDelegate类作为跨平台部分