Flex4与JavaScript交互

来源:互联网 发布:淘宝店家开通花呗条件 编辑:程序博客网 时间:2024/06/03 07:35

利用flex来开发程序很快,有时难免会和js交互.

flex代码:

Flex代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"   
  3.                xmlns:s="library://ns.adobe.com/flex/spark"   
  4.                xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" height="24" width="71"  
  5.                creationComplete="{init()}">  
  6.       
  7.     <fx:Script>  
  8.         <![CDATA[  
  9.               
  10.             public function init():void{  
  11.                 ExternalInterface.addCallback("callFlex",callFlex);  
  12.                 btnCallJs.addEventListener(MouseEvent.CLICK,btnCallJsHandler);  
  13.             }  
  14.               
  15.             public function callFlex(data:*):*{  
  16.                 data.password = "password";  
  17.                 return data;  
  18.             }  
  19.               
  20.             public function btnCallJsHandler(evt:MouseEvent):void{  
  21.                 var data:Object = new Object();  
  22.                 data.userName = "chenjun";  
  23.                 var result:String = ExternalInterface.call("callJs",data);  
  24.                 btnCallJs.label = result;  
  25.             }  
  26.               
  27.               
  28.         ]]>  
  29.     </fx:Script>  
  30.       
  31.     <fx:Declarations>  
  32.         <!-- 将非可视元素(例如服务、值对象)放在此处 -->  
  33.     </fx:Declarations>  
  34.     <s:Button x="0" y="0" id="btnCallJs" label="calljs" height="24"/>  
  35. </s:Application>  

 

编译后会自定生成以下文件:



 AsVSJs.html里面有我们想要的代码:

Js代码  收藏代码
  1. <script type="text/javascript" src="swfobject.js"></script>  
  2.         <script type="text/javascript">  
  3.             <!-- For version detection, set to min. required Flash Player version, or 0 (or 0.0.0), for no version detection. -->   
  4.             var swfVersionStr = "10.0.0";  
  5.             <!-- To use express install, set to playerProductInstall.swf, otherwise the empty string. -->  
  6.             var xiSwfUrlStr = "playerProductInstall.swf";  
  7.             var flashvars = {};  
  8.             var params = {};  
  9.             params.quality = "high";  
  10.             params.bgcolor = "#ffffff";  
  11.             params.allowscriptaccess = "sameDomain";  
  12.             params.allowfullscreen = "true";  
  13.             var attributes = {};  
  14.             attributes.id = "AsVSJs";  
  15.             attributes.name = "AsVSJs";  
  16.             attributes.align = "middle";  
  17.             swfobject.embedSWF(  
  18.                 "AsVSJs.swf""flashContent",   
  19.                 "71""24",   
  20.                 swfVersionStr, xiSwfUrlStr,   
  21.                 flashvars, params, attributes);  
  22.             <!-- JavaScript enabled so display the flashContent div in case it is not replaced with a swf object. -->  
  23.             swfobject.createCSS("#flashContent""display:block;text-align:left;");  
  24.         </script>  

 

将以上信息和自己的index.html页面结合:

Html代码  收藏代码
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  2. <html>  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  5. <title>as vs js</title>  
  6. <script type="text/javascript" src="swfobject.js"></script>  
  7. <script type="text/javascript">  
  8.     var swfVersionStr = "10.0.0";  
  9.     var xiSwfUrlStr = "playerProductInstall.swf";  
  10.     var flashvars = {};  
  11.     var params = {};  
  12.     params.quality = "high";  
  13.     params.bgcolor = "#ffffff";  
  14.     params.allowscriptaccess = "sameDomain";  
  15.     params.allowfullscreen = "true";  
  16.     var attributes = {};  
  17.     attributes.id = "AsVSJs";  
  18.     attributes.name = "AsVSJs";  
  19.     attributes.align = "middle";  
  20.     swfobject.embedSWF(  
  21.         "AsVSJs.swf", "flashContent",   
  22.         "71", "24",   
  23.         swfVersionStr, xiSwfUrlStr,   
  24.         flashvars, params, attributes);  
  25.   
  26.     function callJs(data){  
  27.         document.getElementById("userName").innerHTML = data.userName;  
  28.         return "ok";  
  29.     }  
  30.   
  31.     function btnCallFlexHandler(){  
  32.         var flexApp = document.getElementById("AsVSJs");  
  33.         var data = new Object();  
  34.         data.userName = 'chenjun';  
  35.         try{  
  36.             data = flexApp.callFlex(data);    
  37.         }catch(e){  
  38.             alert(e);  
  39.         }  
  40.         document.getElementById("password").innerHTML = data.password;  
  41.     }  
  42. </script>  
  43. </head>  
  44. <body>  
  45. <div>  
  46.     flex-->userName:<span id="userName"></span>  
  47.     <div id="flashContent"></div>  
  48.     <div>   
  49.         flex-->password:<span id="password"></span><br/>  
  50.         <input type="button" id="btnCallFlex" value="callFlex" onclick="btnCallFlexHandler()"/>  
  51.     </div>  
  52. </div>  
  53.   
  54.   
  55.   
  56. </body>  
  57. </html>  

 

 可以测试调用过程了,ie,Firefox通过测试。

0 0
原创粉丝点击