Flex 學習筆記------Local Shared Object 和 Custom Class

Local Shared Object瀏覽器

actionscript中,SharedObject類能夠把數據存在客戶端。shared object 有兩種類型:local 和 remote。其中Local Shared Object (LSO)相似於瀏覽器的cookie緩存功能,能夠用來記錄用戶的登陸狀態或是其餘信息。緩存

相對於cookie來講,LSO能夠存儲更多的數據量且不會超期。cookie

1. 讀寫 LSO編碼

var example:SharedObject = SharedObejct.getLocal("example");

這裏getLocal()方法,若存在名爲example的LSO,則返回其相應的內容;若不存在,則建立一個新的LSO,而且命名爲example。.net

example.data.username = "Fran";
example.data.array = new Array('1','2','3');
example.data.date = new Date();
example.data.object = {name:'fran', age:'21'};

var result:String = example.flush();

2. 刪除 LSO orm

若是想刪除 LSO 對象裏面的某個變量:對象

example.data.username = null; // 這裏並無真刪除 username
delete example.data.username; // 這裏是真正的刪除了 username

若是想刪除整個 LSO 對象:blog

example.clear(); // 這將在用戶的硬盤中刪除example對應的文件

3. 設置 LSO 的大小ip

example.flush(size);  // size不填默認是0,指使用最小的磁盤空間存儲example

4. Custom Class: 如何在LSO中保存自定義類的實例rem

LSO使用特殊的二進制格式,Action Message Format (AMF),當要在LSO中存儲類實例時,實例會被編碼爲包含屬性的普通的object。這樣當從新從共享對象中讀取實例時,已經不是原來的類實例了,由於已不能根據類型信息解碼回來。

flash.net包中的registerClassAlias( )方法就是爲解決這個問題的,這個方法的使用是很簡單的,在AS1.0和AS2.0中寫法是Object.registerClass( ),可是在AS3.0裏已經被刪除了,取而代之的是flash.net.registerClassAlias( )。

registerClassAlias( )方法須要兩個參數,第一個參數表示類的別名,能夠用任意字符串表示別名,好比modal包中有個Person類,別名能夠是modal.Person,第二個參數類引用。

registerClassAlias( "somePackage.ExampleClass", ExampleClass );
// 建立自定義類
package model {
    public class Person {
        private var _firstName:String;
        private var _age:int;
    }
}

// 主類
package {
    import flash.net.registerClassAlias;
    import flash.net.SharedObject;
    import model.Person;
    public class Example {
    public function Example( ) {

    // 將 "model.Person" 映射到 Person 類
    registerClassAlias( "model.Person", Person );


    var example:SharedObject = SharedObject.getLocal( "example" );

    if ( example.data.person == undefined ) {
        trace( "first time, saving person instance" );
        var person:Person = new Person("Darron", 24);
        example.data.person = person;
    } else {
        trace( "person instance already saved, using stored values" );
    }

    trace( example.data.person.toString( ) );
}
相關文章
相關標籤/搜索