測試環境:
1. Windows XP Pro
2. Flex Builder 2.0.1
ShareObject 類別允許你將小量資料儲存在用戶端電腦。ShareObject 有點類似瀏覽器的 Cookie。應用程式只能存取屬於自己的資料,且應用程式必須和資料同屬於同一個網域(Domain)。但是這個資料並不能傳送到伺服器端。
ShareObject 提供下面的方法
|
從 ShareObject 中清空所有的資料,並從檔案磁碟刪除 ShareObject 檔案。 |
|
將 ShareObject 直接寫入用戶端的檔案 |
|
回傳 ShareObject 所在的 Domain。假如不存在,這個方法會在用戶端建立一個新的 ShareObject |
|
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. |
屬性:
|
(唯讀)儲存在 ShareObject 中的資料 |
|
當 ShareObject 發生警告、錯誤或其他訊息時會觸發這個事件 |
建立 ShareObject 的語法如下:
SharedObject.getLocal("objectName" [, pathname]): SharedObject
下面是簡單的範例:
public var mySO:SharedObject;
mySO = SharedObject.getLocal("preferences");
上述如果在 local 端執行,Flash Player 會產生 preferences.sol 到下面路徑
c:/Documents and Settings/username/Application Data/Macromedia/Flash Player/#SharedObjects/一串數字/localhost/應用程式路徑/SWF 檔名/
以我的情況來說,我的帳號是 Administrator,SWF 放在 "C:/Documents and Settings/Administrator.MYCHAT-1A793BE7/My Documents/Flex Builder 2/Example/bin",preferences.sol 會存放到下面路徑
C:/Documents and Settings/Administrator.MYCHAT-1A793BE7/Application Data/Macromedia/Flash Player/#SharedObjects/96FX85HW/localhost/Documents and Settings/Administrator.MYCHAT-1A793BE7/My Documents/Flex Builder 2/Example/bin/Example.swf/
註:上述路徑和文件所述有出入,不知道是否為文件錯誤。
註:如果你只有執行上述的 getLocal 並不會立即產生 *.sol,你可以在後面加上一行 mySO.flush() 利即將資料寫入檔案。
註:如果程式是在網路上執行,則路徑結構會變為
c:/Documents and Settings/username/Application Data/Macromedia/Flash Player/#SharedObjects/一串數字/web_domain/應用程式路徑/SWF 檔名/
如:
C:/Documents and Settings/Administrator.MYCHAT-1A793BE7/Application Data/Macromedia/Flash Player/#SharedObjects/96FX85HW/www.box.net/static/flash/box_explorer.swf/
註:假如 getLocal 沒有提供 sol 名稱,則會使用 undefined.sol
註:預設情況 ShareObject 在每個網域只能儲存 100KB,如果超過時,Flash Player 會要求使用者允許儲存超過 100KB 的資料
註:也可以使用 getLocal 的第二個參數來指定儲存位置,但必須是目前網域的子目錄
註:可以一次建立多個 ShareOjbect
存取 ShareObject 資料的方法很簡單,只要透過 data 屬性,後面接需要儲存的變數名稱,如下:
// 寫入資料
mySO.data.name = "Chui-Wen Chiu";
mySO.data.age = 27;
// 讀取資料
trace( mySO.data.name )
SharedObject 範例:紀錄登出時間 點一下 Log out 在重新載入 Flash 會看到上次登入時間 |
<?xml version="1.0"?> |
public var mySO:SharedObject; [Bindable] public var welcomeMessage:String; public function initApp():void { mySO = SharedObject.getLocal("mydata"); if (mySO.data.visitDate==null) { welcomeMessage = "Hello first-timer!" } else { welcomeMessage = "Welcome back. You last visited on " + getVisitDate(); } } private function getVisitDate():Date { return mySO.data.visitDate; } private function storeDate():void { mySO.data.visitDate = new Date(); mySO.flush(); } private function deleteLSO():void { // Deletes the SharedObject from the client machine. // Next time they log in, they will be a 'first-timer'. mySO.clear(); }