flex提供了和JS通信的方法,使用flexSDK中的ExternalInterface类实现和JS的相互通信。
ExternalInterface有两个方法call和addCallBack
1.call方法即flex中调用外部js的方法,第一个参数为js函数的函数名,字符串格式,后面的参数为该方法的参数,个数和格式都和JS函数参数格式对应
2.addCallBack是flex给JS开放调用方法的函数,第一个参数为JS中调用flex方法时使用的函数名,为字符串格式,第二个参数为Function,即flex中需要开放供JS调用的函数
Flex程序:
Java代码
1. <?xml version="1.0" encoding="utf-8"?>
2. <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" backgroundAlpha="1" backgroundColor="0xff0000" width="400" height="300" creationComplete="init()">
3. <mx:Script>
4. <![CDATA[
5. import mx.controls.Alert;
6. private function init():void
7. {
8. ExternalInterface.addCallback("flexFunction",flex_function) ;
9. Alert.show(ExternalInterface.call("jsFunction","china")) ;
10. }
11.
12. public function flex_function(s1:String,s2:String):String
13. {
14. return "flex function is called and function returned result :"+s1+" "+s2 ;
15. }
16. ]]>
17. </mx:Script>
18. </mx:Canvas>
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" backgroundAlpha="1" backgroundColor="0xff0000" width="400" height="300" creationComplete="init()">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
private function init():void
{
ExternalInterface.addCallback("flexFunction",flex_function) ;
Alert.show(ExternalInterface.call("jsFunction","china")) ;
}
public function flex_function(s1:String,s2:String):String
{
return "flex function is called and function returned result :"+s1+" "+s2 ;
}
]]>
</mx:Script>
</mx:Canvas>
JavaScrpit程序:
Java代码
1. function jsFunction(s)
2. {
3. var swf = "Flex_JS_CONNECTION" ;
4. var flex
5. /*************判断浏览器类型*/
6. if(navigator.appName.indexOf("Microsoft") != -1)
7. {
8. flex = window[swf];
9. }
10. else
11. {
12. flex = window.document[swf] ;
13. }
14. /*****flex参数代表网页中嵌套的swf文件,即flex应用**************/
15. alert(flex.flexFunction("before","after")) ;
16. return "js is called and param is "+s ;
17.
18.
19. }
function jsFunction(s)
{
var swf = "Flex_JS_CONNECTION" ;
var flex
/*************判断浏览器类型*/
if(navigator.appName.indexOf("Microsoft") != -1)
{
flex = window[swf];
}
else
{
flex = window.document[swf] ;
}
/*****flex参数代表网页中嵌套的swf文件,即flex应用**************/
alert(flex.flexFunction("before","after")) ;
return "js is called and param is "+s ;
}
ExternalInterface有两个方法call和addCallBack
1.call方法即flex中调用外部js的方法,第一个参数为js函数的函数名,字符串格式,后面的参数为该方法的参数,个数和格式都和JS函数参数格式对应
2.addCallBack是flex给JS开放调用方法的函数,第一个参数为JS中调用flex方法时使用的函数名,为字符串格式,第二个参数为Function,即flex中需要开放供JS调用的函数
Flex程序:
Java代码
1. <?xml version="1.0" encoding="utf-8"?>
2. <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" backgroundAlpha="1" backgroundColor="0xff0000" width="400" height="300" creationComplete="init()">
3. <mx:Script>
4. <![CDATA[
5. import mx.controls.Alert;
6. private function init():void
7. {
8. ExternalInterface.addCallback("flexFunction",flex_function) ;
9. Alert.show(ExternalInterface.call("jsFunction","china")) ;
10. }
11.
12. public function flex_function(s1:String,s2:String):String
13. {
14. return "flex function is called and function returned result :"+s1+" "+s2 ;
15. }
16. ]]>
17. </mx:Script>
18. </mx:Canvas>
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" backgroundAlpha="1" backgroundColor="0xff0000" width="400" height="300" creationComplete="init()">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
private function init():void
{
ExternalInterface.addCallback("flexFunction",flex_function) ;
Alert.show(ExternalInterface.call("jsFunction","china")) ;
}
public function flex_function(s1:String,s2:String):String
{
return "flex function is called and function returned result :"+s1+" "+s2 ;
}
]]>
</mx:Script>
</mx:Canvas>
JavaScrpit程序:
Java代码
1. function jsFunction(s)
2. {
3. var swf = "Flex_JS_CONNECTION" ;
4. var flex
5. /*************判断浏览器类型*/
6. if(navigator.appName.indexOf("Microsoft") != -1)
7. {
8. flex = window[swf];
9. }
10. else
11. {
12. flex = window.document[swf] ;
13. }
14. /*****flex参数代表网页中嵌套的swf文件,即flex应用**************/
15. alert(flex.flexFunction("before","after")) ;
16. return "js is called and param is "+s ;
17.
18.
19. }
function jsFunction(s)
{
var swf = "Flex_JS_CONNECTION" ;
var flex
/*************判断浏览器类型*/
if(navigator.appName.indexOf("Microsoft") != -1)
{
flex = window[swf];
}
else
{
flex = window.document[swf] ;
}
/*****flex参数代表网页中嵌套的swf文件,即flex应用**************/
alert(flex.flexFunction("before","after")) ;
return "js is called and param is "+s ;
}