Flex操作cookie


我們使用的是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>  


發佈了18 篇原創文章 · 獲贊 0 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章