<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    gembin

    OSGi, Eclipse Equinox, ECF, Virgo, Gemini, Apache Felix, Karaf, Aires, Camel, Eclipse RCP

    HBase, Hadoop, ZooKeeper, Cassandra

    Flex4, AS3, Swiz framework, GraniteDS, BlazeDS etc.

    There is nothing that software can't fix. Unfortunately, there is also nothing that software can't completely fuck up. That gap is called talent.

    About Me

     

    Flex Shared Object

    Flash cookie
    是不是第一次聽說?cookie大家都不陌生,是一個存儲在瀏覽器目錄的文本文件,最大信息量為4K。Flash cookie類似于瀏覽器cookie的功能,也是存儲在客戶端的文件,其信息量能有多大呢?我曾經(jīng)在飯否上記錄了這段文字:“Flash使得RIA能在客戶端存儲10MB的數(shù)據(jù),Cookies只能存儲4KB。”這段文字也許能說明些什么。下面代碼的核心是共享對象SharedObject的使用,F(xiàn)lash cookie正是基于此對象:
    var so:SharedObject = SharedObject.getLocal("cos");
    if (so.size == 0)
    {
    // 共享對象不存在時。

    trace("created...");
    so.data.now = new Date().time;
    //向Flash cookie中寫數(shù)值……
    so.data.words = "hello cos";
    //向Flash cookie中寫數(shù)值……
    }

    一:LSO(本地共享對象):


    本地共享對象有時被稱作“Flash Cookie”,它是一個數(shù)據(jù)文件,可以由所訪問的站點(diǎn)在您的計(jì)算機(jī)上創(chuàng)建。在Flash中提供了下面的操作本地對象的方法:
    SharedObject.clear() 刪除本地共享對象;
    SharedObject.flush() 立即把共享對象數(shù)據(jù)寫入本地文件;
    SharedObject.getLocal() 創(chuàng)建或連接本地共享對象;
    SharedObject.getSize() 取得本地共享對象的指定大小數(shù)據(jù)。

    主要看下面的這個方法:
    SharedObject.getLocal(objectName [, localPath])
    其中objectName是該共享對象的名字,localPath即共享對象所在路徑。

    // 創(chuàng)建一個本地保存數(shù)據(jù)的對象
    var cookie:Object = SharedObject.getLocal("cookie");

    方 法會在默認(rèn)的路徑下生成一個cookie.sol文件。文件的默認(rèn)大小不能超過100k,當(dāng)然可以通過鼠標(biāo)右擊flash窗口,選擇設(shè)置來管理或者禁用您 的本地共享對象。可以讓每個flash獨(dú)立使用自己的SharedObject,當(dāng)然也可以做一個全域的SharedObject讓所有的swf使用,只 要給localPath 賦值 "/"。
    在win2k和 win xp中,默認(rèn)路徑為C:\Documents and Settings\username\Application Data\Macromedia\Flash Player\#SharedObjects (username為機(jī)器的用戶名)

    每個對象都會有一個只讀屬性data,用來存儲被存儲 到“數(shù)據(jù)特性”中的對象的屬性,這些屬性可以共享/存儲,每一個屬性可以是各種基礎(chǔ)數(shù)據(jù)類型(數(shù)組,數(shù)字布爾值等)對象。現(xiàn)在cookie已經(jīng)存儲在 SharedObject中了,以后你可以通過對SharedObject數(shù)據(jù)屬性的存取來實(shí)現(xiàn)對cookie的存取。例如:

    cookie.data.name = "張三";
    cookie.data.password = "123456";
    cookie.data.rememberPassword = true;

    共享對象的寫入會在應(yīng)用程序退出時自動執(zhí)行,也可以通過cookie.flush()強(qiáng)制寫入

    // Person Class
    class Person{
     
      private var _name:String;
      public setName(value:String):void{
          _name=value;
      }
      public getName():String{
          return _name;
      }
    }
    // Deserilizes custom class in ShareObject
    Object.registerClass("Person",Person);

    // Initializes SharedObject
    var SavedData_so = SharedObject.getLocal("SavedPersonData");
    // Parameters in constructor are NOT saved
    SavedData_so.data.Person = new Person();
    SavedData_so.data.Person.setName("gembin");
    SavedData_so.flush();

    二:RSO(遠(yuǎn)程共享對象):

     RSO是服務(wù)器端的共享對象,服務(wù)器端的數(shù)據(jù)共享可以實(shí)現(xiàn)多個客戶端數(shù)據(jù)共享,在這里服務(wù)器我采用Flash Media Server3FMS的使用非常簡便,你只要在安裝目錄下找到Applications目錄,并在其下新建一個子目錄就可以成為你的工程或項(xiàng)目了。關(guān)于FMS的使用大家可以參考相關(guān)文章,本文不做介紹:利用FMSRSO我們可以實(shí)現(xiàn)非常多的功能,諸如,聊天室,聯(lián)機(jī)游戲,視頻會議,在線視頻錄制和視頻聊天。。。。。。

    在這里我用一個簡單的聊天室實(shí)例為例稍做講解:

    Code
     1  <?xml version="1.0" encoding="utf-8"?>  
     2  <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="TextSO ();">  
     3      <mx:Script>  
     4          <![CDATA[  
     5          import flash.events.SyncEvent;  
     6          import flash.events.NetStatusEvent;  
     7          import flash.events.MouseEvent;  
     8          import flash.net.SharedObject;  
     9          import flash.net.NetConnection;  
    10            
    11          private var text_so:SharedObject;  
    12          private var nc:NetConnection;  
    13          private var rtmpGo:String;  
    14          private var good:Boolean;  
    15    
    16          public function TextSO ():void  
    17          {   
    18               button.label="Send";  
    19               button.addEventListener (MouseEvent.CLICK,sendMsg);//為發(fā)送按鈕添加發(fā)送事件  
    20               rtmpGo = "rtmp://localhost/basicSO";//這里設(shè)置FMS服務(wù)器的連接地址,basicSO即為,  
    21               //FMS安裝目錄下Applications下自己手動新建的一個文件夾名稱,也是FMS的工程名,就是這么簡潔,不可意議  
    22               nc = new NetConnection( );//產(chǎn)生一個連接對象  
    23               nc.connect (rtmpGo);//連接到上面的地址  
    24               nc.addEventListener (NetStatusEvent.NET_STATUS,doSO);//加入連接的監(jiān)聽事件,以便根據(jù)連接返回的狀態(tài)做相應(yīng)處理  
    25          }  
    26    
    27          private function doSO (e:NetStatusEvent):void  
    28          {     
    29               good=e.info.code == "NetConnection.Connect.Success";//判斷是否為連接成功狀態(tài)  
    30               //連接返回的狀態(tài)有好幾種,大家可以參看FMS的文檔,很詳盡  
    31               if (good)//如果連接成軾,執(zhí)行如下操作  
    32               {  
    33                     text_so=SharedObject.getRemote("test",nc.uri,false);//得到遠(yuǎn)程共享對象,false屬性是設(shè)置共享的數(shù)據(jù)為非持久化的,  
    34                      //即重啟服務(wù)器后,先前的數(shù)據(jù)不會保存  
    35                     text_so.connect (nc);  
    36                     text_so.addEventListener (SyncEvent.SYNC,checkSO);  
    37                     //為共享對象添加異步事件,這也是服務(wù)器同步處理多客戶端最關(guān)鍵的地方,  
    38                     //一個客戶端進(jìn)行了什么操作,其它客戶端也會有相應(yīng)的變化,就是通過此事件來完成的  
    39               }  
    40          }  
    41    
    42          private function checkSO (e:SyncEvent):void  
    43          {  
    44               for (var chng:uint; chng<e.changeList.length; chng++)  
    45               {  
    46                     switch (e.changeList[chng].code)  
    47                     {  
    48                          case "clear" :  
    49                               break;  
    50    
    51                          case "success" :  
    52                               trace (text_so.data.msg);  
    53                               break;  
    54    
    55                          case "change" ://一個客戶端改變數(shù)據(jù)會更新所有客戶端  
    56                               textArea.htmlText+=text_so.data.msg + "\n";  
    57                               break;  
    58                     }  
    59               }  
    60          }  
    61    
    62          private function sendMsg (e:MouseEvent):void  
    63          {  
    64               text_so.setProperty ("msg",textInput.text);//將新的信息存入共享對象  
    65               textArea.htmlText+=text_so.data.msg + "\n";//更新客戶端的信息列表  
    66          }  
    67    
    68    
    69          ]]>  
    70      </mx:Script>  
    71      <mx:VBox>  
    72          <mx:TextArea id="textArea" width="200" height="200"/>//信息列表框  
    73          <mx:TextInput id="textInput"/>//消息輸入框  
    74          <mx:Button id="button" />//發(fā)送按鈕  
    75      </mx:VBox>  
    76  </mx:Application> 

    posted on 2008-09-23 14:15 gembin 閱讀(1193) 評論(0)  編輯  收藏 所屬分類: FlashFlexActionScript3

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(6)

    隨筆分類(440)

    隨筆檔案(378)

    文章檔案(6)

    新聞檔案(1)

    相冊

    收藏夾(9)

    Adobe

    Android

    AS3

    Blog-Links

    Build

    Design Pattern

    Eclipse

    Favorite Links

    Flickr

    Game Dev

    HBase

    Identity Management

    IT resources

    JEE

    Language

    OpenID

    OSGi

    SOA

    Version Control

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    free counters
    主站蜘蛛池模板: 亚洲一级视频在线观看| 亚洲人成无码网站| 色在线亚洲视频www| 99久热只有精品视频免费看 | 国产美女无遮挡免费网站| 亚洲三级在线观看| 国产va免费精品观看精品| 亚洲一区二区三区在线观看蜜桃 | 成人免费午夜视频| 亚洲成a人片在线看| 永久免费观看的毛片的网站| 91在线亚洲综合在线| 热99re久久免费视精品频软件| 亚洲欧美日韩中文字幕一区二区三区 | 8090在线观看免费观看| 久久综合亚洲鲁鲁五月天| 在免费jizzjizz在线播| 亚洲人成人77777在线播放| 在线观看免费毛片| 边摸边吃奶边做爽免费视频99| 亚洲人午夜射精精品日韩| 久久久精品视频免费观看| 亚洲VA中文字幕无码毛片| 最近中文字幕高清免费中文字幕mv| 亚洲成在人线中文字幕| 好吊妞在线新免费视频| 羞羞视频免费观看| 亚洲AV无码一区东京热| 黄网站色在线视频免费观看| 亚洲成a∨人片在无码2023| 亚洲国产人成中文幕一级二级| 亚洲视频免费在线观看| 国产最新凸凹视频免费| 99亚洲精品卡2卡三卡4卡2卡| 免费国产黄线在线观看| 亚洲AV日韩AV鸥美在线观看| 免费人成在线观看视频高潮| 精品熟女少妇aⅴ免费久久 | 国产免费观看视频| 免费视频一区二区| 中文无码亚洲精品字幕|