<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的功能,也是存儲在客戶端的文件,其信息量能有多大呢?我曾經在飯否上記錄了這段文字:“Flash使得RIA能在客戶端存儲10MB的數據,Cookies只能存儲4KB。”這段文字也許能說明些什么。下面代碼的核心是共享對象SharedObject的使用,Flash cookie正是基于此對象:
    var so:SharedObject = SharedObject.getLocal("cos");
    if (so.size == 0)
    {
    // 共享對象不存在時。

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

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


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

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

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

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

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

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

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

    // 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(遠程共享對象):

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

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

    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);//為發送按鈕添加發送事件  
    20               rtmpGo = "rtmp://localhost/basicSO";//這里設置FMS服務器的連接地址,basicSO即為,  
    21               //FMS安裝目錄下Applications下自己手動新建的一個文件夾名稱,也是FMS的工程名,就是這么簡潔,不可意議  
    22               nc = new NetConnection( );//產生一個連接對象  
    23               nc.connect (rtmpGo);//連接到上面的地址  
    24               nc.addEventListener (NetStatusEvent.NET_STATUS,doSO);//加入連接的監聽事件,以便根據連接返回的狀態做相應處理  
    25          }  
    26    
    27          private function doSO (e:NetStatusEvent):void  
    28          {     
    29               good=e.info.code == "NetConnection.Connect.Success";//判斷是否為連接成功狀態  
    30               //連接返回的狀態有好幾種,大家可以參看FMS的文檔,很詳盡  
    31               if (good)//如果連接成軾,執行如下操作  
    32               {  
    33                     text_so=SharedObject.getRemote("test",nc.uri,false);//得到遠程共享對象,false屬性是設置共享的數據為非持久化的,  
    34                      //即重啟服務器后,先前的數據不會保存  
    35                     text_so.connect (nc);  
    36                     text_so.addEventListener (SyncEvent.SYNC,checkSO);  
    37                     //為共享對象添加異步事件,這也是服務器同步處理多客戶端最關鍵的地方,  
    38                     //一個客戶端進行了什么操作,其它客戶端也會有相應的變化,就是通過此事件來完成的  
    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" ://一個客戶端改變數據會更新所有客戶端  
    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" />//發送按鈕  
    75      </mx:VBox>  
    76  </mx:Application> 

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

    導航

    統計

    常用鏈接

    留言簿(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
    主站蜘蛛池模板: 亚洲妇熟XXXX妇色黄| 国产成人精品日本亚洲直接| 中文无码成人免费视频在线观看 | 亚洲人成精品久久久久| 久久久久国产精品免费看| 亚洲人成电影网站免费| 国产精品亚洲产品一区二区三区| 久久这里只精品国产免费10 | 最近中文字幕电影大全免费版| 亚洲日韩中文字幕一区| 亚洲春色在线视频| 白白国产永久免费视频| 日本在线看片免费人成视频1000| 亚洲国产精华液2020| 亚洲视频精品在线| 亚洲国产成人久久精品99| 台湾一级毛片永久免费| 不卡视频免费在线观看| 亚洲人成电影网站色| 久久99亚洲网美利坚合众国 | 久久久久久久亚洲精品| 最新猫咪www免费人成| 免费视频精品一区二区三区 | 久久久久国产精品免费看| 无套内谢孕妇毛片免费看看| 91亚洲国产成人久久精品网址| 久久久精品国产亚洲成人满18免费网站| 亚洲第一成年免费网站| 亚洲免费视频在线观看| 色老头综合免费视频| 亚洲妇女熟BBW| 亚洲白色白色永久观看| 亚洲春色在线视频| 中国亚洲女人69内射少妇| 免费人成年轻人电影| 男女交性永久免费视频播放| 57PAO成人国产永久免费视频 | 欧洲人免费视频网站在线| 337P日本欧洲亚洲大胆艺术图 | 亚洲精品在线播放| 亚洲av中文无码乱人伦在线r▽|