《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 参数类型
参数类型可以是任意数量,可以支持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游戏开发引擎,为手游而生!
微信小游戏开发:如何选择游戏引擎
推荐资讯
- 1老六爱找茬美女的烦恼怎么过- 4999
- 2博德之门3黄金雏龙法杖怎么得 4869
- 3《大侠立志传》剿灭摸金门任务 4312
- 4代号破晓官方正版角色介绍 4023
- 5赛马娘锻炼到底的伙伴支援卡事 3802
- 6闪烁之光11月兑换码大全20 3774
- 7原神原海异种刷怪路线-原神原 3547
- 8爆梗找茬王厕所特工怎么通关- 3542
- 9《我的世界》领地删除指令是什 3440
- 10原神开局星落湖怎么出去 原神 3426