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,然后做想做的事情吧
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 方法
import flash.external.ExternalInterfacebtn.onRelease = function(){
txt.text= ExternalInterface.call("check")
}
//btn是在flash中的一个按钮,点一下就调用一次javascript里的check函数
//txt是在flash中的一个动态文件,显示check函数的返回值
//如果check带有参数,那么ExternalInterface.call("check")在"check"后面添加上即可,如
//ExternalInterface.call("check","flash_msg")
以上是flash调用js里的函数,flash与js之间的通信数据类型都为String
===================如果你觉得足够了,下面的就无视它==========================
同样,javascript也可以调用flash的函数,如楼上各位提到的addCallback,用这个来注册一个可以供javascript调用的函数
如:
import flash.external.ExternalInterface
ExternalInterface.addCallback("flashCheck",null,flashCheck)
function flashCheck(){
return "flash's function"
}
//addCallback
//第一个参数是js调用的函数名,即js调用函数时就用这个名字,不需跟第三个参数一致,可以说是别名一类的
//第二个参数是this 在该方法中被解析成的对象,可以为任何对象或null,一般很少会用到,所以你可以无视它,直接给个null即可
//第三个参数是你flash中存在的函数,即是js真实调用的函数