AS 调用 creator js 与 js 调用 AS 方法

JavaScript011

AS 调用 creator js 与 js 调用 AS 方法,第1张

1. cocos creator js 调用 AS 的方法

❶ 安卓端:

在 Android 应用中,Cocos 引擎的渲染和 JS 的逻辑是在 GL 线程中进行的,而 Android 本身的 UI 更新是在 App 的 UI 线程进行的,所以如果我们在 JS 中调用的 Java 方法有任何刷新 UI 的操作,都需要在 UI 线程进行。

❷ js 端:

2. AS 端调用 js 方法

js 端: 被调用的方法一定要是 全局函数 ,要不然会报错

AS 端:  要返回到 GL线程里调用

具体请参考 cocos creator 官方文档中的 ‘Java 原生反射机制’ : 如何在 Android 平台上使用 JavaScript 直接调用 Java 方法

AS调用JS函数:

ExternalInterface.call(JS中的函数名,参数一,参数二)//调用JS中的一个函数

以下AS代码:

import flash.external.ExternalInterface

例子:ExternalInterface.call('alert',‘hello world!’)//会弹出JS的提示框

JS调用AS函数:

ExternalInterface.addCallback(提供给JS调用的名称,调用的函数) //提供一个函数给JS调用

以下AS代码:

import flash.external.ExternalInterface

import mx.controls.Alert

public function asFunc(a:int,b:int):int

{

Alert.show(a+b)

}

ExternalInterface.addCallback("add",asFunc)

以下JS代码:

add(1,2)//调用的其实是AS中的asFunc方法 ,会在Flash中弹出提示框

as里不能直接调用到js里的变量,必须以传参的方式来进行,步骤如下:

1)as调用js的方法A

ExternalInterface.call("A")

2)方法 A 调用as里的方法 B ,调用时将i作为参数

as里注册一个方法:ExternalInterface.addCallback("B",Real_B)

js里调用:document[flashObjectName].B(i)

其中flashObjectName是flash控件的id名.

3)在as的方法Real_B里,获取到传来的参数i,然后做想做的事情吧