《Cocos Creator游戏开发实战》 ——2.2.4 调用原生平台的代码

2.2.4 调用原生平台的代码

Android平台主要支持的开发语言是Java,而iOS平台主要支持的开发语言是Objective-C,一般我们开发跨Android和iOS平台的项目,都是使用C++,就像Cocos2D-X做的那样,然而有些系统的功能只能使用原生语言进行开发,所以需要提供调用原生平台的接口。

Cocos Creator提供了调用原生平台的接口,首先来看Android平台的调用:

var o = jsb.reflection.callStaticMethod(className, methodName, methodSignature, parameters...)

Android平台通过callStaticMethod方法传入类名、方法名、方法签名和参数就可以调用Java层的静态方法,获得方法返回值。其中Java类名的范例如下:

org/cocos2dx/javascript/Test

需要注意的是要用斜线分割。方法签名用来标示具体调用的方法的返回值和参数类型,在Java有方法重载的情况下方法签名如下:

(I)V

括号内表示参数类型,括号后面的符号表示返回值的类型,参数类型见表2-1。

表2-1 参数类型

image.png

参数类型可以是任意数量,可以支持JavaScript的number、bool和string类型。

需要注意的是,在Android应用中,Cocos引擎的渲染和逻辑都是在OpenGL线程中进行的,而Android本身的UI更新是在App的UI线程中进行的,所以在脚本中进行的任何刷新UI的操作,都需要在UI线程中进行。

使用实例如下所示:

var result = jsb.reflection.callStaticMethod("org/cocos2dx/javascript/Test", "sum", "(II)I", 1, 1);

在iOS和macOS平台上,通过callStaticMethod方法传入类名、方法名和参数就可以调用Objective-C层的静态方法:

var o = jsb.reflection.callStaticMethod(className, methodNmae, arg1, arg2, .....) 

与Java的反射调用不同,Objective-C层的调用,提供的类名不需要完整的路径,另外,调用Objective-C层的静态方法时需要传入完整的方法名,特别是当某个方法带有参数的时候,需要将冒号也带上。

callNativeUIWithTitle:andContent:

如果没有参数,那么就不需要加上冒号。使用的实例如下所示。

var ret = jsb.reflection.callStaticMethod("NativeOcClass",

                                 "callNativeUIWithTitle:andContent:",

                                   "cocos2d-js",

                                   "Example");

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com

相关知识

《Cocos Creator游戏开发实战》 ——2.2.4 调用原生平台的代码
小程序游戏开发的游戏引擎选择
小程序游戏开发:选择合适的游戏引擎
OPPO 开放平台
毕业设计:移动端的游戏开发
游戏前端开发入门【马士兵教育】
这几本游戏开发书籍推荐给为未来的游戏工程师
小程序游戏开发引擎选择:Cocos、Egret、Laya
Cocos游戏开发引擎,为手游而生!
微信小游戏开发:如何选择游戏引擎

网址: 《Cocos Creator游戏开发实战》 ——2.2.4 调用原生平台的代码 http://www.hyxgl.com/newsview362112.html

推荐资讯