Actionscript 3 SharedObject支持哪些数据类型?

Actionscript 3 SharedObject支持哪些数据类型?,actionscript-3,shared-objects,Actionscript 3,Shared Objects,我知道用SharedObject存储字符串和数字很简单,我也很熟悉这类事情: var sharedObject:SharedObject = SharedObject.getLocal("userData"); var obj:Object = new Object(); obj.prop = "value"; sharedObject.data.userobj= obj; sharedObject.flush(); 然而,我试图存储GameStage类的一个对象,我已经定义了一个类来保存关于

我知道用SharedObject存储字符串和数字很简单,我也很熟悉这类事情:

var sharedObject:SharedObject = SharedObject.getLocal("userData");
var obj:Object = new Object();
obj.prop = "value";
sharedObject.data.userobj= obj;
sharedObject.flush();
然而,我试图存储GameStage类的一个对象,我已经定义了一个类来保存关于游戏中各个阶段的数据。这类事情似乎不起作用:

var sharedObject:SharedObject = SharedObject.getLocal("userData");
var stageOne:GameStage = new GameStage();
stageOne.highScore = 99999;
sharedObject.data.stageOne = stageOne;
sharedObject.flush();
这段代码不会抛出错误,但当我稍后尝试检索阶段数据时,如下所示:

stageOne = sharedObject.data.stageOne;
我得到这个错误:

TypeError: Error #1034: Type Coercion failed: cannot convert Object@3d220629 to GameStage.
我想我的问题是:SharedObject中到底可以存储什么类型的数据?我在网上看到的每一个地方都用“任何可以在Flash中使用的东西”来回答这个问题,这不是很好的描述——显然我的GameStage类也可以在Flash中使用。从SharedObject检索数据有什么我不知道的吗


我的预测是,我将无法以这种方式存储阶段数据。如果是这样的话,有人能推荐另一种保存数据的方法吗?

您可以将任何对象存储在中,但需要先注册类:

您可以存储类型化的ActionScript 共享对象中的实例。是吗 通过拨打 flash.net.registerClassAlias()方法 注册班级。如果你创造 类的实例并将其存储 在共享数据库的数据成员中 对象,然后读取该对象, 您将得到一个类型化实例。通过 默认情况下,SharedObject objectEncoding属性支持AMF3 编码,并解压缩存储的 来自SharedObject对象的实例; 存储的实例保留相同的属性 调用时指定的类型 registerClassAlias()方法


一个警告是,存储对象图有时会导致存储问题。在SharedObject通知用户并请求允许存储更多内容之前,您可以在其中存储的内容是有限制的。我认为默认情况下,该阈值为100k。

如果您使用的是Flex Builder SDK或Flex Builder,您还可以使用[RemoteClass]元标记,它将自动注册该类并使其可序列化