gpt4 book ai didi

actionscript-3 - SharedObject 支持哪些数据类型?

转载 作者:行者123 更新时间:2023-12-04 04:30:49 24 4
gpt4 key购买 nike

我知道用 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 中检索数据有什么我不知道的吗?

我的预测是我将无法以这种方式存储我的舞台数据。如果是这样,谁能建议另一种保存数据的方法?

最佳答案

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

You can store typed ActionScript instances in shared objects. You do this by calling the flash.net.registerClassAlias() method to register the class. If you create an instance of your class and store it in the data member of your shared object and later read the object out, you will get a typed instance. By default, the SharedObject objectEncoding property supports AMF3 encoding, and unpacks your stored instance from the SharedObject object; the stored instance retains the same type you specified when you called the registerClassAlias() method.

需要注意的是,存储对象图有时会导致存储问题。在 SharedObject 通知用户并请求存储更多权限之前,您可以在 SharedObject 中存储多少是有限制的。我相信这个阈值默认是 100k。

关于actionscript-3 - SharedObject 支持哪些数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1106087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com