❶ 安卓端:
在 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 方法
'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)
通过ExternalInterface调用js函数
语法:
ExternalInterface类的call方法
ExternalInterface.call(functionName:String,...arguments):*
//第一个参数是js的函数名,后面的是js函数的参数
举例:
1、js函数
function hello(h){alert(h)
}
2、flash调用
ExternalInterface.call(hello,"nihao") 调用后会弹出nihao