CocosCreator之KUOKUO带你搞反射-简单的安卓交互

摘要

在使用 CocosCreator 打包的原生应用中,我们可以通过引擎封装好的反射机制调用 Java 的静态方法,从而实现提示、相册、支付跳转等功能。本次内容为环境介绍与简单的交互。

正文

先看效果

版本说明

  • CocosCreator 为 2.2.1 版本。
  • AndroidStudio 为 3.5.2 版本。
  • JDK 为 13 版本。(具体:13.0.1)
  • NDK 为 20 版本。(具体:20.1.5948944)
  • SDK 安装了 API 23 的。
  • 模拟器为 AVD。(可以在 AndroidStudio 内安装)

CocosCreator 设置截图:

jsb 的反射方法

写一个获取字符串的方法:

const className = "org/cocos2dx/javascript/AppActivity"
let text = jsb.reflection.callStaticMethod(className, "getTestText", "()Ljava/lang/String;")

在 callStaticMethod 方法中,我们通过传入 Java 的类名,方法名,传入参数类型与返回类型,就可以直接调用 Java 的静态方法。其中方法名后面的参数代表类型。比如 “()V” 代表无参数无返回值,”()I” 代表无参数整型返回值(int)。具体的对应见下表。

布局

在 CocosCreator 中布局好两个按钮一个文本,在脚本中写两个方法并绑定至按钮,如图。

脚本

cc.Class({
extends: cc.Component,

properties: {
testLabel: cc.Label,
},

showLabel () {
const className = "org/cocos2dx/javascript/AppActivity"
let text = jsb.reflection.callStaticMethod(className, "getTestText", "()Ljava/lang/String;")
this.testLabel.string = text + ""
},

show () {
this.showToast("弹窗啦!")
},

showToast (string) {
const className = "org/cocos2dx/javascript/AppActivity"
jsb.reflection.callStaticMethod(className, "showToast", "(Ljava/lang/String;)V", string)
}

});

一切就绪,点击构建面板的“构建”,完成后在 “/build/jsb-default/frameworks/runtime-src/“ 下你会发现 “proj.android-studio” 文件夹,这就是 AndroidStudio 工程,打开并 Build。

Java 写法

找到 Java 文件 “/app/src/org/cocos2dx/javascript/AppActivity.java”,然后我们添加对应的静态方法:

public static String getTestText () {
return "我是 Java 返回的字符串!";
}

这样就完成了第一个显示。然后接下来调用 Toast 提示要注意,cocos 引擎的渲染和 JS 的逻辑是在 GL 线程中进行的,而 Android 本身的 UI 更新是在 App 的 UI 线程进行的,所以 Toast 需要在 UI 线程进行,写法也很简单。

// 先定义一个静态变量 app 用于接收 this。
private static AppActivity app = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (!isTaskRoot()) {
return;
}
SDKWrapper.getInstance().init(this);
// 添加这一句
app = this;
}

public static void showToast (final String string) {
app.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(app, string, Toast.LENGTH_LONG).show();
}
});
}

这样就实现了 Toast 提示的弹出!给个全部截图:

结语

有意思吧,我们下一次介绍如何调起相机并选择图片!
O(∩_∩)O~~

微信公众号

CocosCreator之KUOKUO带你搞反射-简单的安卓交互

https://www.kuokuo666.com/home/kk029.html

作者

KUOKUO众享

发布于

2020-01-15

更新于

2024-03-05

许可协议

评论