CocosCreator 中 JS 与 Java 互相调用

栏目: 编程语言 · IOS · 发布时间: 8年前

内容简介:最近项目是使用 CocosCreator 开发的一款小游戏,有些功能需要调用 Android 原生代码,这涉及到 CocosCreator 中 JS 与 Java 的互相调用问题,本文记录互相调用时的方式和注意事项。在 CocosCreator 下 JS 调用 Java/Objective-C 的格式都是:JS 只能调用 Java 中的静态方法,需要传入类名、方法名、方法签名、方法参数,并且可以获得返回值。

最近项目是使用 CocosCreator 开发的一款小游戏,有些功能需要调用 Android 原生代码,这涉及到 CocosCreator 中 JS 与 Java 的互相调用问题,本文记录互相调用时的方式和注意事项。

1. JS 调用 Java 方法

在 CocosCreator 下 JS 调用 Java/Objective-C 的格式都是:

var 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/lang/String;

如果是其他类型的话,可以考虑转换为 JSON 字符串。

参数

参数可以是 0 个或任意多个,直接使用 JS 中的 number,bool 和 string 就可以。

注意,如果 JS 调用 Java 过程中,需要更新 UI 元素,更新的部分代码需要运行在 UI 线程中 Activity.runOnUiThread(Runnable) ,因为 JS 调用 Java 的过程不是运行在 UI 线程中的。

2. Java 调用 JS 函数

有时候还需要在 Java 中回调 JS 函数,例如微信登录成功后回调给 JS 函数,目前的方式是用 Cocos2dxJavascriptJavaBridge 的静态方法 evalString() 。

// cc.wxcb 是挂在 cc 的一个对象
Cocos2dxJavascriptJavaBridge.evalString("cc.wxcb.onLoginResp('"+ authResp.token +"')");

所传参数只支持 JS 中的 number,bool 和 string。

但是需要注意的是 Java 回调 JS 时,一定要运行在 GL 线程中:

activity.runOnGLThread(new Runnable() {
    @Override
    public void run(){
        Cocos2dxJavascriptJavaBridge.evalString("cc.wxcb.onLoginResp('"+ authResp.token +"')");
    }
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

技术的本质

技术的本质

布莱恩•阿瑟(Brian Arthur) / 曹东溟、王健 / 浙江人民出版社 / 2014-4-1 / 62.90

★《技术的本质》是复杂性科学奠基人、首屈一指的技术思想家、“熊彼特奖”得主布莱恩•阿瑟所创建的一套关于技术产生和进化的系统性理论,本书是打开“技术黑箱”的钥匙,它用平实的语言将技术最本质的思想娓娓道来。 ★技术,是一个异常美丽的主题,它不动声色地创造了我们的财富,成就了经济的繁荣,改变了我们存在的方式。尽管技术如此重要,却少有人在快节奏的生活中停下来深入思考技术。我们了解技术的原理,却不知道......一起来看看 《技术的本质》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码