❶ 安卓端:
在 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)