日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Flex与Javascript交互

發布時間:2023/12/10 java 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Flex与Javascript交互 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關鍵字:ExternalInterface

所用類庫:SWFObject

?

/**

?* Flex調用Javascript函數

?* @params? functionName:String?? Javascript函數名稱

?* @params ...params??? Javascript函數參數

?* @return? 返回Javascript函數的return內容

?**/

ExternalInterface.call(functionName:String, ...params);

?

main.mxml

view plaincopy to clipboardprint?
  • <?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.ExternalInterface;??
  • ????????????import?mx.utils.ObjectUtil;??
  • ????????????/**?
  • ?????????????*??調用Java????script????函數?
  • ?????????????*??@params?evt:MouseEvent?
  • ?????????????*??@return?void?
  • ?????????????**/??
  • ????????????private?function?myClick(evt:MouseEvent):void?{??
  • ????????????????var?item:Object?=?new?Object();??
  • ????????????????item.name?=?"Dante";??
  • ????????????????item.address?=?"Beijing";??
  • ?????????????????????????
  • ????????????????var?results:Object?=?ExternalInterface.call("myfunc",item);??
  • ????????????????//results為myfunc函數返回的對象 ??
  • ????????????????trace(ObjectUtil.toString(results));??
  • ????????????}??
  • ????]]-->??
  • </mx:Script>??
  • ???
  • <mx:Button?label="Click?me"?click="myClick(event);"/>??
  • </mx:Application>??
  • <?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.ExternalInterface; import mx.utils.ObjectUtil; /** * 調用Java script 函數 * @params evt:MouseEvent * @return void **/ private function myClick(evt:MouseEvent):void { var item:Object = new Object(); item.name = "Dante"; item.address = "Beijing"; var results:Object = ExternalInterface.call("myfunc",item); //results為myfunc函數返回的對象 trace(ObjectUtil.toString(results)); } ]]--> </mx:Script> <mx:Button label="Click me" click="myClick(event);"/> </mx:Application>

    index.html

    view plaincopy to clipboardprint?
  • /**?
  • ?* 被Flex調用的?myfunc函數?
  • ?*????@params?item??對象?
  • ?*????@return?results 返回一個對象給Flex?
  • ?**/??
  • function?myfunc(item)?{??
  • ????alert(item.name+"--"+item.address);??
  • ?????
  • ???//創建對象 ??
  • ????var?results?=?{};??
  • ????results?.name=?"dante";??
  • ????results?.age?=?23;??
  • ????results?.sex?=?"man";??
  • ????return?obj;??
  • }??
  • /** * 被Flex調用的 myfunc函數 * @params item 對象 * @return results 返回一個對象給Flex **/ function myfunc(item) { alert(item.name+"--"+item.address); //創建對象 var results = {}; results .name= "dante"; results .age = 23; results .sex = "man"; return obj; }


    /**

    ?* Javascript調用Flex函數

    ?* @params?? functionName:String??? Javascript調用Flex函數名

    ?* @params?? closure:Function???? Flex將要調用的函數

    ?* @return void

    ?**/

    ExternalInterface.addCallback(functionName:String,closure:Function);

    ?

    main.mxml

    view plaincopy to clipboardprint?
  • <?xml?version="1.0"?encoding="utf-8"?>??
  • <mx:Application?xmlns:mx="http://www.adobe.com/2006/mxml"?????
  • ????layout="absolute"?initialize="initApp()">??
  • <mx:Script>??
  • ????<!--[CDATA[??
  • ????????????import?flash.external.ExternalInterface;??
  • ????????????import?mx.utils.ObjectUtil;??
  • ????????????/**?
  • ?????????????*??initApp?
  • ?????????????*??@return?void?
  • ?????????????**/??
  • ????????????private?function?initApp():void?{??
  • ?????????????????//注冊列表 ??
  • ?????????????????ExternalInterface.addCallback("saveD",saveData);??
  • ?????????????????
  • ?????????????????//HTML 與 FLEX交互 ??
  • ?????????????????//params.flashvars?=?"xmlPath=hello&name=dante"; ??
  • ?????????????????var?item:Object?=?Application.application.parameters;??
  • ?????????????????trace("xmlPath:"+item.xmlPath?,"name:"?+?item.name);??
  • ????????????}??
  • ????????????/**?
  • ?????????????*??saveData?
  • ?????????????*??@params?item:Object??java????script????傳過來的參數?
  • ?????????????*??@return?void?
  • ?????????????**/??
  • ????????????private?function?saveData(item:Object):void?{??
  • ?????????????????trace("javascript調用Flex函數成功!");??
  • ?????????????????nameTxt.text?=?item.name;?????
  • ????????????}??
  • ????]]-->??
  • </mx:Script>??
  • ??<mx:TextInput?id="nameTxt"/>??
  • </mx:Application>??
  • <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="initApp()"> <mx:Script> <!--[CDATA[ import flash.external.ExternalInterface; import mx.utils.ObjectUtil; /** * initApp * @return void **/ private function initApp():void { //注冊列表 ExternalInterface.addCallback("saveD",saveData); //HTML 與 FLEX交互 //params.flashvars = "xmlPath=hello&name=dante"; var item:Object = Application.application.parameters; trace("xmlPath:"+item.xmlPath ,"name:" + item.name); } /** * saveData * @params item:Object java script 傳過來的參數 * @return void **/ private function saveData(item:Object):void { trace("javascript調用Flex函數成功!"); nameTxt.text = item.name; } ]]--> </mx:Script> <mx:TextInput id="nameTxt"/> </mx:Application>

    index.html

    HTML內嵌swf文件,我用的SWFObject,個人認為是一個很好的類庫,簡化了包含代碼。
    注意 :javascript調用Flex的函數,必須要獲得swf的ID,可以通過document.getElementById(),也可以使用swfobject.getObjectById()。

    view plaincopy to clipboardprint?
  • <!DOCTYPE?html?PUBLIC?"-//W3C//DTD?XHTML?1.0?Transitional//EN"?"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">??
  • <html?xmlns="http://www.w3.org/1999/xhtml"?xml:lang="zh"?lang="zh"?dir="ltr">??
  • <head>??
  • <meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8"/>??
  • <mce:script?src="js/swfobject.js"?mce_src="js/swfobject.js"?type="text/javascript"></mce:script>?????
  • <title>SWFObject</title>??
  • <mce:script?type="text/javascript"?language="javascript"><!--??
  • ????var?flashvars?=?{};??
  • ????flashvars.xmlPath?=?"hello";??
  • ????flashvars.name????=?"dante";??
  • ??????
  • ????var?params?=?false;??
  • ??????
  • ????var?attributes?=?{};??
  • ????//ID,也就是swf的ID,這個ID很重要,通過它調用flex的方法 ??
  • ????attributes.id?=?"swf01";????
  • ???? ??
  • ????//內嵌swf文件,這個embedSWF方法,我在最后的補充會說下 ??
  • ????swfobject.embedSWF("swf/main.swf","myPanel","300","200","9.0.0","swf/expressInstall.swf",flashvars,params,attributes);??
  • ????/**?
  • ????* 調用Flex函數?
  • ????*????@return?void?
  • ????**/??
  • ????function?callFlex(item)?{??
  • ????????//通過ID獲得swf,也可以使用document.getElementById(); ??
  • ????????//var?swf?=?document.getElementById("swf01"); ??
  • ????????var?swf?=?swfobject.getObjectById("swf01");??
  • ????????var?item?=?{};??
  • ????????item.name?=?document.getElementById("nameTxt").value;??
  • ????????//調用Flex函數,傳參item:Object ??
  • ????????swf.saveD(item);??
  • ????}??
  • //?--></mce:script> ??
  • </head>??
  • <body>??
  • <center>??
  • ????<div?id="myPanel">Flex?content</div>??
  • ????<table>??
  • ????????<tr>??
  • ????????????<td>Name</td>??
  • ????????????<td><input?type="text"?id="nameTxt"/></td>??
  • ????????</tr>??
  • ????????<tr>??
  • ????????????<td?colspan="2">??
  • ????????????????<a?href="javascript:callFlex();"?mce_href="javascript:callFlex();">Call?Flex</a>??
  • ????????????</td>??
  • ????????</tr>??
  • ????</table>??
  • </center>??
  • </body>??
  • </html>??
  • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh" lang="zh" dir="ltr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <mce:script src="js/swfobject.js" mce_src="js/swfobject.js" type="text/javascript"></mce:script> <title>SWFObject</title> <mce:script type="text/javascript" language="javascript"><!-- var flashvars = {}; flashvars.xmlPath = "hello"; flashvars.name = "dante"; var params = false; var attributes = {}; //ID,也就是swf的ID,這個ID很重要,通過它調用flex的方法 attributes.id = "swf01";   //內嵌swf文件,這個embedSWF方法,我在最后的補充會說下 swfobject.embedSWF("swf/main.swf","myPanel","300","200","9.0.0","swf/expressInstall.swf",flashvars,params,attributes); /** * 調用Flex函數 * @return void **/ function callFlex(item) { //通過ID獲得swf,也可以使用document.getElementById(); //var swf = document.getElementById("swf01"); var swf = swfobject.getObjectById("swf01"); var item = {}; item.name = document.getElementById("nameTxt").value; //調用Flex函數,傳參item:Object swf.saveD(item); } // --></mce:script> </head> <body> <center> <div id="myPanel">Flex content</div> <table> <tr> <td>Name</td> <td><input type="text" id="nameTxt"/></td> </tr> <tr> <td colspan="2"> <a href="javascript:callFlex();" mce_href="javascript:callFlex();">Call Flex</a> </td> </tr> </table> </center> </body> </html>

    ?


    OK,兩種交互的方式已經告訴大家了,快試試吧。

    ?

    SWFObject使用補充:

    ?????? swfobject.embedSWF()

    ?????? swfobject.getObjectById("swfID")

    ?????? swfobject.removeSWF("swfID")

    ?

    一.swfobject.embedSWF:

    內嵌swf文件,這個函數的參數比較多swfobject.embedSWF(swfUrl, id, width, height, version,expressInstallSwfurl, flashvars,params, attributes),各個參數具體功能如下:

  • swfUrl(String,必須的)指定SWF的URL。
  • id(String,必須的)指定將會被Flash內容替換的HTML元素(包含你的替換內容)的id。
  • width(String,必須的)指定SWF的寬。
  • height(String,必須的)指定SWF的高。
  • version(String,必須的)指定你發布的SWF對應的Flash Player版本(格式為:major.minor.release)。
  • expressInstallSwfurl(String,可選的)指定express install SWF的URL并激活Adobe express install。
  • flashvars(String,可選的)用name:value對指定你的flashvars。
  • params(String,可選的)用name:value對指定你的嵌套object元素的params。
  • attributes(String,可選的)用name:value對指定object的屬性。
  • 注意 :在不破壞參數順序的情況下,你可以忽略可選參數。如果你不想使用一個可選參數,但是會使用后面的一個可選參數,你可以簡單的傳入false作為參數的值。對flashvars、params和 attributes這些JavaScript對象來說,你也可以相應的傳入一個空對象{}。

    二.swfobject.getObjectById("swfId")

    通過swfid獲得swf對象,通過該對象可調用flex函數。

    三.swfobject.removeSWF("swfId")

    通過swfId刪除swf。

    注意 :刪除swf這里需要提醒下,因為embedSWF是替換標簽,而不是填充。比如上面的例子<div id="myPanel">Flex content</div>,如果執行了swfobject.removeSWF后,想重新添加SWF必須要重新創建<div id="myPanel">或者更改embedSWF的第二個參數更改替換新的標簽ID。因為在這里SWF替換了調了<div>

    轉載于:https://www.cnblogs.com/liuzhong/archive/2011/07/20/2111960.html

    總結

    以上是生活随笔為你收集整理的Flex与Javascript交互的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。