Pay for Hesitation: SharedObject簡單用法

Pages

2008年3月10日 星期一

SharedObject簡單用法

ShareObject允許我們將小量資料儲存在client端,類似瀏覽器的Cookie。應用程式只能存取屬於自己的資料,且應用程式必須和資料同屬於同一個domain,但資料並不能傳送到伺服器端。
ShareObject 提供下面的方法

clear(): 從ShareObject中清空所有的資料,並從檔案磁碟刪除ShareObject檔案。
flush(): 將ShareObject直接寫入client的檔案。
getLocal(): 回傳ShareObject所在的domain。如果不存在,則會在client建立一個新的ShareObject。
getSize(): Gets the size of the SharedObject file, in bytes. The default size limit is 100 KB, although it can be larger if the client allows it.

[簡單範例]
A.mxml (把資料寫入SharedObject存在client端) ------------------

public var mySO:SharedObject;
mySO = SharedObject.getLocal("sharedname");
mySO.flush();
//在client端執行,Flash Player會產生sharedname.sol到下面路徑
//C:/Documents and Settings/username/Application Data/Macromedia/Flash Player/#SharedObjects/一串數字/localhost/sharedname.sol
//這種寫法只能在同一個swf檔中共同使用SharedObject, 可用getLocal的第二個參數達到跨swf存取

public var mySO2:SharedObject;
mySO2 = SharedObject.getLocal("shared2", "/");
//C:/Documents and Settings/username/Application Data/Macromedia/Flash Player/#SharedObjects/一串數字/domain name/sharedname.sol
//也就是說, 利用getLocal的第二個參數來指定儲存位置,即目前網域的子目錄

//存取 ShareObject 資料的方法很簡單,只要透過 data 屬性,後面接需要儲存的變數名稱,如下:
mySO2.data.username = "odd";
mySO2.data.blog = "oddlee.blogspot.com";
mySO2.flush();
//記得要做flush();才會把資料寫入檔案

B.mxml (B.swf將剛才存在同一處client端的SharedObject取出) -----------------
[Bindable]
public var username:String;

public var myData:SharedObject;
myData = SharedObject.getLocal("shared2", "/");
username = myData.data.account;
...
<mx:textinput id="user" text="{username}">

沒有留言: