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( ) );
}
相关文章
相关标签/搜索