Flex SharedObject

來源:互聯網
上載者:User

Flex SharedObject 對象詳解

 

  ShareObject,顧名思義共用對象,而通常意義上的共用,從B/S結構上來講,無非是用戶端(瀏覽器端)的共用和伺服器端的共用了,不錯,ShareObject剛好份演了這兩種角色。而且ShareObject也是按此進行了兩種分類,一類是LSO——Local Share Object(本地共用對象)其實類似於cookie,而另一種RSO——Remote Share Object(遠程共用對象) 我感覺比較類似於JSP中的Application對象,但好象比Application更強大。

 

  下面我分別用執行個體代碼來說兩者的用法和用途:

 

  

一:LSO(本地共用對象)

LSO的用法比較簡單,和我們平常操作Cookie大同小異:

1.得到一個共用對象:

var so:SharedObject=SharedObject.getLocal("mydata","/");

2.往共用對象裡存入值:

var user:Object=new Object();

user.userName=userName.text;

user.passWord=passWord.text;

user.isSaveLogin=(remember.selected==true?1:0);

so.data.user=user;

3.清除共用對象裡的值:

 

4.讀取共

      var so:SharedObject=SharedObject.getLocal("mydata","/");

if(so.data.user!=null){

so.data.user=null;

}

享對象裡的值:

       var so:SharedObject=SharedObject.getLocal("mydata","/");

if(so.data.user!=null){

userName.text=so.data.user.userName;

passWord.text=so.data.user.passWord;

if(so.data.user.isSaveLogin.toString()=="1"){

remember.selected=true;

}

二:RSO(遠程共用對象):

 RSO是伺服器端的共用對象,伺服器端的資料共用可以實現多個用戶端資料共用,在這裡伺服器我採用Flash Media Server3,FMS的使用非常簡便,你只要在安裝目錄下找到Applications目錄,並在其下建立一個子目錄就可以成為你的工程或項目了。關於FMS的使用大家可以參考相關文章,本文不做介紹:利用FMS和RSO我們可以實現非常多的功能,諸如,聊天室,聯機遊戲,視頻會議,線上視頻錄製和視訊交談。。。。。。

在這裡我用一個簡單的聊天室執行個體為例稍做講解:

 

<?xml version="1.0" encoding="utf-8"?>   
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="TextSO ();">
<mx:Script>
<![CDATA[
import flash.events.SyncEvent;
import flash.events.NetStatusEvent;
import flash.events.MouseEvent;
import flash.net.SharedObject;
import flash.net.NetConnection;

private var text_so:SharedObject;
private var nc:NetConnection;
private var rtmpGo:String;
private var good:Boolean;

public function TextSO ():void
{
button.label="Send";
button.addEventListener (MouseEvent.CLICK,sendMsg);//為發送按鈕添加發送事件
rtmpGo = "rtmp://localhost/basicSO";//這裡設定FMS伺服器的串連地址,basicSO即為,
//FMS安裝目錄下Applications下自己手動建立的一個檔案夾名稱,也是FMS的工程名,就是這麼簡潔,不可意議
nc = new NetConnection( );//產生一個連線物件
nc.connect (rtmpGo);//串連到上面的地址
nc.addEventListener (NetStatusEvent.NET_STATUS,doSO);//加入串連的監聽事件,以便根據串連返回的狀態做相應處理
}

private function doSO (e:NetStatusEvent):void
{
good=e.info.code == "NetConnection.Connect.Success";//判斷是否為串連成功狀態
//串連返回的狀態有好幾種,大家可以參看FMS的文檔,很詳盡
if (good)//如果串連成軾,執行如下操作
{
text_so=SharedObject.getRemote("test",nc.uri,false);//得到遠程共用對象,false屬性是設定共用的資料為非持久化的,
//即重啟伺服器後,先前的資料不會儲存
text_so.connect (nc);
text_so.addEventListener (SyncEvent.SYNC,checkSO);
//為共用對象添加非同步事件,這也是伺服器同步處理多用戶端最關鍵的地方,
//一個用戶端進行了什麼操作,其它用戶端也會有相應的變化,就是通過此事件來完成的
}
}

private function checkSO (e:SyncEvent):void
{
for (var chng:uint; chng<e.changeList.length; chng++)
{
switch (e.changeList[chng].code)
{
case "clear" :
break;

case "success" :
trace (text_so.data.msg);
break;

case "change" ://一個用戶端改變資料會更新所有用戶端
textArea.htmlText+=text_so.data.msg + "\n";
break;
}
}
}

private function sendMsg (e:MouseEvent):void
{
text_so.setProperty ("msg",textInput.text);//將新的資訊存入共用對象
textArea.htmlText+=text_so.data.msg + "\n";//更新用戶端的資訊列表
}


]]>
</mx:Script>
<mx:VBox>
<mx:TextArea id="textArea" width="200" height="200"/>//資訊列表框
<mx:TextInput id="textInput"/>//訊息輸入框
<mx:Button id="button" />//發送按鈕
</mx:VBox>
</mx:Application>

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.