cocos2d-x集成到IOS/Android SDK控件

本文介绍了iOS开发中Objective-C与C++混编的方法及注意事项,同时深入探讨了使用cocos2d-x游戏引擎时如何将原生iOS控件集成到OpenGL视图中的技巧。此外,还讲解了Android NDK的配置与使用,包括如何利用JNI实现Java与C++的交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IOS篇

C++与Objective C混编

Objective C的头文件是.h,源文件是.m,可与C++进行混编,但源文件的后缀要改为.mm。

所以,任何加了C++的Objective C源代码,只需要把后缀名改一下,就可以通过编译。


CCEGLView与View

使用IOS原生控件代替cocos2d-x的CCSprite控件

下面EAGLView是cocos2d-x封装的一个类,实际上是封装了OpenGL的一个显示对象

 window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen]
          bounds];
EAGLView *__glView = [EAGLView viewWithFram : [window bounds]
				pixelFormat:kEAGLColorFormatRGBA8
				depthFormat:GL_DEPTH_COMPONENT16
				preserveBackBuffer:NO
				sharegroup:nil
				multiSampling:NO
				numberOfSamples:0
];

用视图控制器控制EAGLView——把OpenGL封装类加入到里面

viewController = [[RootViewController alloc]initWithNibName:nil
bundle:nil];
viewController.wantFullScreenLayout = YES;
viewController.view = __glView;

把IOS视图控件加入OpenGL的封装类中

UIImageVIew *imageView = [[UIImageView alloc] InitWithImage : [UIImageNamed:@"icon.png"]];    //IOS中的view控件
[__glView addSubview:imageView];

同样,如果要弄网络控件,也可以

UIWebView *webView;
[__glView addSubview:webView]

如果要创造广告控件,也可以如此。


注意,要setRootViewController to window

if([UIDevice currentDevice].systemVersion floatValue < 6.0)
{
   //warning : addSubview doesn't work on ios6.0
  [window addSubview : viewCOntroller.view];
}
else
{
  [window setRootViewController:viewController];
}
[window makeKeyAndVisible];

android篇

android NDK 开发(Native Development Kit)

android NDK是android SDK的补充,允许你的应用使用C/C++(原生代码)去实现——通过虚拟机去执行。在cocos2d-x中如果需求不大,一般都可以不写android代码,如果要加广告等一些第三方sdk控件时,可能要修改JAVA代码,就要用到JNI。
NDK作用:提供一系列工具,帮助开发者快速开发C/C++库,并把so和java应用打包到apk。
NDK特性:集成交叉编译器,提供相应的mk文件,隔离CPU,平台,ABI差异。开发人员只需简单修改mk,就可以创建so。
NDK缺陷:提供的API很有限。

重要插件——sequoyah

http://www.eclipse.org/sequoyah/downloads/index.php#latest
相当于把java项目转成一个支持C++的项目。不必重复繁琐的脚本编写和导入步骤,非常方便。
安装方法简介:
在Help->install new software中add  http://download.eclipse.org/sequoyah/updates/2.0/ 。然后把红色的勾去掉。

HelloJNI 实例

安装cygwin,并在Eclipse中配置好NDK路径

1、新建HelloJNI SDK工程

2、右键HelloJNI项目,在Android tools中选Add  Native support(sequoyah 插件提供的功能)

这一步只需要输入一个so文件名,很简单。


完成插件的配置后,Eclipse会增加C++的编辑器;项目中会增加jni,obj文件夹。


注意事项:

1、要视线给Eclipse配置好NDK路径

2、配置C语言include和lib路径

3、增加cygwin的bin到window 的 环境变量PATH中。

请参考下面的链接

在Eclipse中使用sequoyah插件配置Android NDK环境  



3、如需要则配置"C/C++ Build"和"C/C++ General->Path and symbols"(有时候安装时候可能会出小问题,导致需要配置)

MakeFile解析

这部分网上资料多,就不详述了。

哪些需要编译

编译特性要求

JNI运用

cocos2d-x提供了JNIHelper,可以简化调用流程。这部分的详细内容网上资料多,就不详述了。

配置:

1.要修改create-android-project.bat/sh的SDK和NDK路径。


这部分主大概要学会的是JAVA中怎么调用C++,C++中怎么调用JAVA。学习步骤:

1、JNI会定义从JAVA和C++数据类型的映射,这个可以学习下。

2、然后分别学习JAVA和C++互调的方法。先学习下函数的调用,这里看起来有很多奇怪的函数表达式,其实就是因为JAVA和C++间的数据类型不能直接调用,而是通过映射调用的,所以会有很多转换代码。我们学习的时候,可以屏蔽这些转换代码,抄袭下,知道怎么用就行,然后就会熟悉了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值