我們使用的是flex/flash獨有的SharedObject對象實現類cookies。
使用兩個以上的SharedObject,注意使用static的getLocal方法
getLocal () 方法
public static function getLocal(name:String, localPath:String = null, secure:Boolean = false):SharedObject
尤其注意第二個形參,localPath:String,
Flex SharedObject 介紹(轉自http://www.eb163.com/club/thread-3235-1-1.html):
Flash的本地共享對象是在用戶機器上實現持久化存儲的數據集合。Flash可以從程序中控制這些數據集合,向其中存入或者從中讀取大量的信息數據。
使用SharedObject對象
對象說明:SharedObject(共享對象)可以看作是小型的數據庫,我們可以用它來存儲任何Flash支持的數據類型,比如數字、字符串、數組和對象等等。SharedObject按存放位置可分爲本地型(存在客戶端)和遠程型(存在服務器端)。本地型共享對象的擴展名爲.sol。
用法:下面是關於本地型共享對象的部分最主要的方法、屬性的介紹。
1)getLocal(name) 方法 “name”參數共享對象名,返回共享對象的參照
2)flush 方法 立即把數據寫入共享對象
3)data 屬性 存取共享對象數據的通道
只需要掌握以上這些知識就可以用共享對象來存取外部數據了。
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()強制寫入。
示例:按方法一設置場景,然後輸入下面的代碼。
var user_so = sharedobject.getlocal("user"); // 建立共享對象的參照
send_btn.onRelease = function() {
with (user_so) {
data.name = name; //用data屬性和flush方法保存用戶輸入的用戶名
flush();
}
};
本地型共享對象只能把數據保存在默認路徑下,而且擴展名只能是.sol。這種方法的作用與設置cookies的作用類似。
只有必須在不同flash對象之間共享數據時才需要在SharedObject.getLocal()方法中指定path參數,將所有必須共享數據的flash對象都單獨放到一個目錄下。
SharedObject應用後生成的文件在本地的存放目錄(轉自:http://bbs.airia.cn/FLEX/thread-3956-1-1.aspx):
* Windows XP:
o For Web sites: C:\Documents and Settings\<user>\Application Data\Macromedia\Flash Player\#SharedObjects\<random code>\<domain>\<path>\<object name>.sol
o For AIR Applications, C:\Documents and Settings\<user>\Application Data\<AIR Application Reverse Domain Name>\Local Store\#SharedObjects\<flash filename>.swf\<object name>.sol
* Windows Vista
o C:/Users/username/<user>/AppData/Roaming/Macromedia/Flash Player/#SharedObjects/<domain>/<path>/<flash filename>.swf/<object name>.sol
* Mac OS X:
o For Web sites, Macintosh HD:Users:<user>:Library:Preferences:Macromedia:Flash Player:#SharedObjects:<random code>:<domain>:<path from webserver>\<object name>.sol
o For AIR Applications, Macintosh HD:Users:<username>:Library:Preferences:<AIR Application Reverse Domain Name>:Local Store:#SharedObjects:<flash filename>.swf\<object name>.sol
* Linux/Unix:
o /home/<User>/.macromedia/Flash_Player/#SharedObjects/<domain>/<path>/<flash filename>.swf/<object name>.sol
在Flex中利用SharedObject實現Cookie功能(轉自:http://www.gold98.net/blog/article.asp?id=748):
SharedObject提供了下面的操作本地對象的方法:
SharedObject.clear() 刪除本地共享對象;
SharedObject.flush() 立即把共享對象數據寫入本地文件;
SharedObject.getLocal() 創建或連接本地共享對象;
SharedObject.getSize() 取得本地共享對象的指定大小數據。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init(event)" borderColor="#FFFFFF" themeColor="#FFFFFF" width="800" height="600" backgroundColor="#FFFFFF" textAlign="center" verticalAlign="middle" horizontalAlign="center" backgroundImage="@Embed(source='lt1.jpg')">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.events.FlexEvent;
private function init(event:FlexEvent):void {
// 創建一個本地保存數據的對象s
var test:SharedObject = SharedObject.getLocal("testcookie");
test.data.user = "testuser";
test.data.psw = "testpwd";
test.flush(); //提交保存
var test2: SharedObject = SharedObject.getLocal("testcookie");
Alert.show(test2.data.user);
Alert.show(test2.data.psw);
}
]]>
</mx:Script>
</mx:Application>