先来看Flex调用JavaScript中的函数
FlexConnectJavaScript.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import flash.external.*;
public function invokeJavaScript():void
{
lblResult.text=ExternalInterface.call("returnTheName","huangxi";
}
]]>
</mx:Script>
<mx:Button id="btnConnect" label="调用JavaScript" click="invokeJavaScript()" x="229" y="204"/>
<mx:Label id="lblResult" text="test" x="205" y="99" width="150" height="80"/>
</mx:Application>
FlexConnectJavaScript.html中<Script>加入
function returnTheName(a)
{
return "HUANGXI";
}
////////////////////////
小结
1.ExternalInterface.call("returnTheName","huangxi");其中第一个参数与JavaScript中的函数相同,第二个参数为传递参数。
再来看JavaScript调用flex中的函数
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp()">
<mx:Script>
<![CDATA[
import flash.external.ExternalInterface;
public function add():int
{
var i:int;
var sum:int=0;
for(i=1;i<=100;i++)
{
sum+=i;
}
return sum;
}
public function initApp():void
{
ExternalInterface.addCallback("addTo100",add);
}
]]>
</mx:Script>
</mx:Application>
JavaScriptConnectFlex.html中加入
<button onclick="addMethod()">计算</button>
...
中加入
function addMethod()
{
var s=JavaScriptConnectFlex.addTo100();
alert(s);
}
///////////////
小结
1.ExternalInterface.addCallback("addTo100",add);定义JavaScript可以调用的方法
2.可见JavaScript要调用Flex函数,Flex要声明一下;而Flex调用JavaScript函数则不需要