问题
我想把自定义类实例存储到LSO
解决办法
使用flash.net.registerClassAlias( )方法保留类型信息并把类实例添加到共享对象的data属性上。
讨论
LSOs 使用特殊的二进制格式,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,第二个参数类引用。

-ActionScript
registerClassAlias( "somePackage.ExampleClass", ExampleClass );

这个代码的作用是把这个类的信息存进LSO,当读取数据时,Flash 播放器就知道这个object到底是什么类。

下面的例子完整实现了类实例的保存,首先创建自定义类:

-ActionScript
// Create a Person class in the model package
package model {
public class Person {
private var _firstName:String;
private var _age:int;
public function Person(firstName:String, age:int) {
_firstName = firstName;
_age = age;
}
public function toString( ):String {
return _firstName + " is " + _age + " years old";
}
}
}

接着,编写主类读取和写入数据

-ActionScript
package {
import flash.net.registerClassAlias;
import flash.net.SharedObject;
import model.Person;
public class Example {
public function Example( ) {
// Map "model.Person" to the Person class
registerClassAlias( "model.Person", Person );
// Create a shared object and store a Person instance in it
var example:SharedObject = SharedObject.getLocal( "example" );
// Test to see if the person instance has been saved already
if ( example.data.person == undefined ) {
trace( "first time, saving person instance" );
var person:Person = new Person("Darron", 24);
// Write the class instance to the local shared object
example.data.person = person;
} else {
trace( "person instance already saved, using stored values" );
}
/* Every time this code is executed, the following is displayed:
Darron is 24 years old
*/
trace( example.data.person.toString( ) );
}

这里需要注意的是registerClassAlias( )必须在SharedObject.getLocal( )方法之前调用才有效。否则的话共享对象会把Person解释为普通的object类型进行存储。

转载于:https://www.cnblogs.com/bmate/archive/2011/06/20/2084915.html

Flex 序列化自定义类 解决 sharedObject 保存自定义对象相关推荐

  1. android studio自定义类,为AndroidStudio设置自定义类注释

    我们在使用eclipse的时候,只要在类上面输入/**再按enter,就会出现类注释. package com.demo; /** * * @author chenjunxu * */ public ...

  2. Delphi语言如何对自定义类进行持久化保存及恢复 (性能远比json/xml高)

    Delphi的RTL自身就带有一套很好的资源持久化保存(IDE设计窗体时,保存为DFM格式及编译到EXE里面的资源文件)及恢复机制(EXE启动时对窗体资源的加载),那么应没必要再额外用xml/json ...

  3. java import自定义类_Java实现的自定义类加载器示例

    本文实例讲述了Java实现的自定义类加载器.分享给大家供大家参考,具体如下: 一 点睛 1 ClassLoader类有如下两个关键方法: loadClass(String name, boolean ...

  4. joblib自定义类的使用细节

    问题根源: 问题描述: 自定义类与joblib保存的代码放在一块: one.py: class Own():      pass if __name__=="__main__": ...

  5. 使用tolua++编译pkg,从而创建自定义类让Lua脚本使用

    2019独角兽企业重金招聘Python工程师标准>>> 在Lua第三篇中介绍了,如何在cocos2dx中使用Lua创建自定义类供Lua脚本调用使用,当时出于Himi对Lua研究不够深 ...

  6. 练习:数字时钟(Python 自定义类)

    Python 官网:https://www.python.org/ Free:大咖免费"圣经"教程< python 完全自学教程>,不仅仅是基础那么简单-- My CS ...

  7. WebService中使用自定义类的解决方法(5种)

    转自:http://www.cnblogs.com/lxinxuan/archive/2007/05/24/758317.html Demo下载:http://files.cnblogs.com/lx ...

  8. 【Java文件操作(七)】序列化:将自定义类写入文件

    我的博客--Java文件操作系列 [Java文件操作(一)]递归打印文件目录 [Java文件操作(二)]删除文件夹,但保留其内部文件 [Java文件操作(三)]递归复制文件夹内所有文件 [Java文件 ...

  9. Python 自定义类中NameError错误的解决

    Python 自定义类中NameError错误的解决 自定义类之后,python中常常有莫名其妙的NameError提示出错.经尝试后发现,在修改类代码并保存之后,光重新import类是不够的,需要重 ...

最新文章

  1. HAL Flat Display Driver Demystified
  2. Oracle大数据量分页通用存储过程
  3. 如何让机器获得幽默感——Goolge图学习技术揭秘
  4. 在线音乐电台Pandora股价暴涨20% CEO肯尼迪辞任
  5. Ubuntu下pip安装、升级、卸载
  6. BugkuCTF-Misc:隐写2
  7. 逻辑斯谛回归(Logistic回归)最详解
  8. vsftpd安装问题汇总(持续更新。。)
  9. 论文浅尝 | 面向 cQA 的跨语言问题检索方法
  10. android连接此设备时打开,QtScrcpy: Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限...
  11. 车牌号专用键盘设计和正则验证
  12. ADO 连接数据库的几种方式
  13. mysql5.7设置默认的字符集
  14. PostgreSQL 内存OOM控制策略导致数据库无法启动的诊断一例(如何有效避免oom)
  15. L1-054 福到了-PAT团体程序设计天梯赛GPLT
  16. DBA最缺的不是技术
  17. c# 线程 WPF 进度百分比(菜鸟)
  18. php tp框架文档,Thinkphp 框架基础之入口文件功能、定义与用法分析
  19. A.B.C类地址的私有地址、局域网地址、保留地址
  20. winrar打包bat成exe并自动运行

热门文章

  1. 使用Puppeteer进行数据抓取(一)——安装和使用
  2. javascript . 05 json的组成、for...in 遍历对象、简单数据类型与复杂数据类型的传值与传址、内置对象...
  3. http协议相关内容
  4. sqlserver 查询中使用Union或Union All
  5. MapReduce操作HBase
  6. Asp.net 请求中变量的保存方式
  7. 在asp.net中实现回车替代Tab键
  8. 2017年苹果公司开发者账号申请-公司邓白氏编码
  9. iOS开发常用的RGB色值和宏
  10. jQuery—tab栏切换