ivaneeo's blog

          自由的力量,自由的生活。

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks

          眾所周知Flex主要用于B/S結(jié)構(gòu)程序的開發(fā),凡是這類型的開發(fā)都存在頁面間的傳值的問題,通常一般的B/S開發(fā)主要不外乎使用地址修改法,隱藏表單域等方法,但是這些方法在Flex中確沒有用,原因是應(yīng)為Flex支持的模型和普通的B/S開發(fā)語言不一樣,一般的B/S開發(fā)語言使用的主要是請求/響應(yīng)模型,而Flex采用的是事件驅(qū)動(dòng)模型(這種模型主要見于C/S結(jié)構(gòu)程序),所以我們的Form表單等傳值方法就無效了,哪么我們?nèi)绾卧趦蓚€(gè)這樣模型的頁面中傳遞數(shù)據(jù)呢?下面我們講述下兩種常用的傳值方法:
          一、 利用ExternalInterface調(diào)用Javascript
          a) 該方法主要利用ExternalInterface的call方法調(diào)用Javascript函數(shù),進(jìn)而修改地址(有點(diǎn)類似于地址修改法),在接受頁面上主要是靠BrowserManager獲取地址欄信息,并利用URLUtil截取參數(shù)。
          b) 該方法雖然簡單但是確調(diào)用了2種語言,給編寫帶來一定的困難
          發(fā)送頁面代碼(second.html):
          <?xml version="1.0" encoding="utf-8"?>
          <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
           <mx:Script>
            <![CDATA[
            function kk():void{
             var val:String = myparam.text;
           ExternalInterface.call("function(){window.location.href='http://localhost:8080/send/page.html#param1="+val+"'}");  }
            ]]>
           </mx:Script>
           <mx:TextInput  id="myparam"></mx:TextInput>
           <mx:Button name="ok" click="kk()" x="185" label="提交"></mx:Button>
          </mx:Application>
          接收頁面代碼(page.html):
          <?xml version="1.0" encoding="utf-8"?>
          <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()" >
           <mx:Script>
            <![CDATA[
             import mx.managers.IBrowserManager;
             import mx.managers.BrowserManager;
             import mx.utils.URLUtil;
             [Bindable]
             var param:String;
             function init():void
             {
              var bm:IBrowserManager = BrowserManager.getInstance(); 
              bm.init();
              var o:Object = URLUtil.stringToObject(bm.fragment,"&");
              param = o.param1;
             }
            ]]>
           </mx:Script>
           <mx:TextInput id="val" text="{param}">
           </mx:TextInput>
          </mx:Application>
          二、 利用SharedObject(本地共享對象傳送)
          a) 該對象類似于Cookie,將需要傳送的數(shù)據(jù)放在SharedObject對象中,而實(shí)際上在本機(jī)大致在(win2k和 win xp中,默認(rèn)路徑為C:/Documents and Settings/username/Application Data/Macromedia/Flash Player/#SharedObjects (username為機(jī)器的用戶名))位置生成一個(gè)sol文件,該對象具有一個(gè)data屬性,只要將你要傳的數(shù)據(jù)按鍵值對放進(jìn)去就好了,下次讀取的時(shí)候就在本地直接讀取即可
          b) 遺憾的是,該對象要求你自己創(chuàng)建還要自己清除,并且在寫入數(shù)據(jù)時(shí)一定要強(qiáng)制刷新,否則數(shù)據(jù)無法希爾
          發(fā)送頁面代碼(index.html):
          <?xml version="1.0" encoding="utf-8"?>
          <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
           <mx:Script>
            <![CDATA[
             function s mit():void
             {
              var param:String = myparam.text;
              //創(chuàng)建全局SharedObject,如果不用全局就去掉后面的"/",一旦去掉那么cookie只能被自己的Application使用,其他Applicaiton無法看見
              //myparam是要求在本機(jī)創(chuàng)建一個(gè)叫cookie.sol的文件
              var obj:SharedObject = SharedObject.getLocal("cookie","/");
              obj.data.username=myparam.text;
              obj.flush();
              //調(diào)用URLReqst將跳轉(zhuǎn)到second.html頁面
              var reqst:URLReqst =new URLReqst();
              reqst.url="second.html";
              navigateToURL(reqst);
             }
            ]]>
           </mx:Script>
           <mx:TextInput id="myparam"></mx:TextInput>
           <mx:Button label="提交" click="s mit()" x="177"></mx:Button>
          </mx:Application>
          接收頁面代碼(second.html):
          <?xml version="1.0" encoding="utf-8"?>
          <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
           <mx:Script>
            <![CDATA[
             [Bindable]
             var param:String;
             function init():void
             {
              //在本地找到myparam.sol文件
              var obj:SharedObject =SharedObject.getLocal("cookie","/");
              //讀取前頁存入的數(shù)據(jù)
              param = obj.data.username;
              //用完了別忘了將myparam.sol文件刪除
              obj.clear();
             }
            ]]>
           </mx:Script>
           <mx:TextInput id="mypar" text="{param}"></mx:TextInput>
          </mx:Application>


          posted on 2011-10-21 16:32 ivaneeo 閱讀(519) 評論(0)  編輯  收藏 所屬分類: flex-我酷所以我在
          主站蜘蛛池模板: 崇义县| 大名县| 漳州市| 都匀市| 江油市| 通道| 宜州市| 麻栗坡县| 衡东县| 三亚市| 观塘区| 富平县| 永寿县| 汝城县| 洛阳市| 连江县| 宝应县| 天津市| 轮台县| 札达县| 龙口市| 敖汉旗| 勐海县| 长顺县| 南京市| 岳普湖县| 英山县| 襄垣县| 阳东县| 富川| 禹城市| 水富县| 仙居县| 宝丰县| 宝兴县| 泸州市| 富宁县| 井研县| 云阳县| 盐源县| 清远市|