我知道用 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 检索数据的情况?
我的预测是我将无法以这种方式存储我的舞台数据。如果是这种情况,有人可以建议另一种方法来保存数据吗?
您可以将任何对象存储在共享对象 http://livedocs.adobe.com/flex/3/html/help.html?content=lsos_3.html,但你需要先注册该类:
您可以存储键入的 ActionScript
共享对象中的实例。你做
通过调用
flash.net.registerClassAlias() 方法
注册课程。如果你创建
你的类的一个实例并存储它
在您共享的数据成员中
对象,然后读出该对象,
你将得到一个类型化的实例。经过
默认情况下,共享对象
objectEncoding 属性支持 AMF3
编码,并解压您存储的
SharedObject 对象的实例;
存储的实例保留相同的
调用时指定的类型
registerClassAlias() 方法。
需要注意的是,存储对象图有时会导致存储问题。在 SharedObject 通知用户并请求存储更多数据之前,您可以在 SharedObject 中存储的数据量是有限制的。我相信这个阈值默认是 100k。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)