当前位置: 首页 > 工具软件 > Reflection.js > 使用案例 >

ios 调用 java方法_[cocosjs] android/ios平台用js调用Java/OC静态方法

颜思淼
2023-12-01

Cocos2d-JS v3.0加入了在原生平台调用java/oc静态方法的特性。使用方法如下:

java调用:

jsb.reflection.callStaticMethod(className, methodName, methodSignature, parameters...)

在callStaticMethod方法中,我们通过传入Java的类名,方法名,方法签名,参数就可以直接调用Java的静态方法,并且可以获得Java方法的返回值。

方法签名:

目前Cocos2d-js中支持的Java类型签名有下面4种:

Java类型

签名

int

I

float

F

boolean

Z

String

Ljava/lang/String; (后面带分号)

示例:

()V 表示一个没有参数没有返回值的方法

(I)V 表示参数为一个int,没有返回值的方法

(I)I 表示参数为一个int,返回值为int的方法

(IF)Z 表示参数为一个int和一个float,返回值为boolean的方法

注意:

在android应用中,cocos的渲染和js的逻辑是在gl线程中进行的,而android本身的UI更新是在app的ui线程进行的,所以在js中调用的Java方法有任何刷新UI的操作,都需要在ui线程进行。

OC调用:

jsb.reflection.callStaticMethod(className, methodNmae, arg1, arg2, .....);

在jsb.reflection.callStaticMethod方法中,我们通过传入OC的类名,方法名,参数就可以直接调用OC的静态方法,并且可以获得OC方法的返回值。

注意:

1、参数中的类名,只需要传入OC中的类名即可,与Java不同,类名并不需要路径

2、需要传入完整的方法名,特别是当某个方法带有参数的时候,需要将:也带上 ,没有参数不需要带。

3、在OC的实现中,如果方法的参数需要使用float、int、bool的,请使用如下类型进行转换:

float,int 请使用NSNumber类型

bool请使用BOOL类型

目前参数和返回值支持 int, float, bool, string,其余的类型暂时不支持。

 类似资料: