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

JavaScript014

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里的变量,必须以传参的方式来进行,步骤如下:

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,然后做想做的事情吧

'JS给AS设置变量

function setflash(varn, value){

var flash = document.getElementById("index")

flash.SetVariable(varn,value)

}

'JS获取AS变量

function getVar(varn){

var v = GetVariable(varn)

}

'JS控制AS跳转

function goto() {

n++

document.myFlash.GotoFrame(n)

}

'AS调用JS函数

on (release) {

getURL(\"JavaScript:alert('hello,world')\")

}

'JS间接调用AS函数

原理:JS改变AS的值,AS跟据值的变化调用其函数

var stat=0

setInterval(test,300){

if (stat==1) doFlash()

}

function doFlash(){

}

JS

flash.SetVariable(star,1)