zoukankan      html  css  js  c++  java
  • Flex 学习笔记------Local Shared Object 和 Custom Class

    Local Shared Object

    actionscript中,SharedObject类可以把数据存在客户端。shared object 有两种类型:local 和 remote。其中Local Shared Object (LSO)类似于浏览器的cookie缓存功能,可以用来记录用户的登录状态或是其他信息。

    相对于cookie来说,LSO可以存储更多的数据量且不会超期。

    1. 读写 LSO

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

    这里getLocal()方法,若存在名为example的LSO,则返回其相应的内容;若不存在,则创建一个新的LSO,并且命名为example。

    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 

    如果想删除 LSO 对象里面的某个变量:

    example.data.username = null; // 这里并没有真删除 username
    delete example.data.username; // 这里是真正的删除了 username
    

    如果想删除整个 LSO 对象:

    example.clear(); // 这将在用户的硬盘中删除example对应的文件
    

    3. 设置 LSO 的大小

    example.flush(size);  // size不填默认是0,指使用最小的磁盘空间存储example

    4. Custom Class: 如何在LSO中保存自定义类的实例

    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( ) );
    }

      

      

     

    -----------------------------一花开五叶 结果自然成-------------------------------------------------
  • 相关阅读:
    Gitee + PicGo搭建图床 & Typora上传图片到图床
    算法思维 ---- 双指针法
    Floyd's cycle-finding algorithm
    Boyer-Moore Voting Algorithm
    youtube-dl 使用小记
    算法思维 ---- 滑动窗口
    Memo
    英语
    BZOJ 3270
    BZOJ 3196
  • 原文地址:https://www.cnblogs.com/zyc-undefined/p/3199963.html
Copyright © 2011-2022 走看看