最近项目是使用 CocosCreator 开发的一款小游戏,有些功能需要调用 Android 原生代码,这涉及到 CocosCreator 中 JS 与 Java 的互相调用问题,本文记录互相调用时的方式和注意事项。
1. JS 调用 Java 方法
在 CocosCreator 下 JS 调用 Java/Objective-C 的格式都是:
1var o = jsb.reflection.callStaticMethod(className, methodName, methodSignature, parameters...)
JS 只能调用 Java 中的静态方法,需要传入类名、方法名、方法签名、方法参数,并且可以获得返回值。
类名
类名必须是包含 Java 包路径的完整类名,而且用斜线/代替点.,例如com.johnny.test.WxApiHelper应该传入com/johnny/test/WxApiHelper。
方法名
方法名很简单,就是方法本来的名字。
方法签名
方法签名有点复杂,最简单的方法签名是()V,它表示一个没有参数也没有返回值的方法。括号里的符号表示参数类型,括号后面的符号表示返回值类型。因为 Java 是允许函数重载的,可以有多个方法名相同但是参数返回值不同的方法,方法签名正是用来帮助区分这些相同名字的方法的。
目前 Cocos Creator 中支持的 Java 类型签名有下面 4 种:
Java 类型
签名
int
I
float
F
boolean
Z
String
Ljava/