AS3如何调用JS里面的参数

JavaScript012

AS3如何调用JS里面的参数,第1张

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

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.ExternalInterface

btn.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真实调用的函数