即使在单独的游戏会话之后,我如何保持变量的一致性?

How do I keep a variable consistant even after seperate play sessions?

我有一个存储数字的变量area

当应用程序重新启动时,它会重置回其原始值。如何在关闭后保持 area 持久?

我正在为 Android

使用 Flash CS6

您必须保存变量。有多种方法可以做到这一点,但使用 SharedObject 是最简单的 IMO。

首先,您实际上并没有创建 SharedObject class 的新实例,而是调用了静态函数 getLocal 并设置了您的变量。所以在你的程序开始附近的某个地方,你会想要这样的东西:

var gameSave:SharedObject = SharedObject.getLocal("gameSave");

这要么创建一个新的本地永久共享对象(如果不存在),要么在您的计算机上获取具有相同初始化名称 ("gameSave") 的共享对象。这样您就可以跨多个游戏访问保存的变量。

现在要保存变量,您只需在共享对象上使用 dataObject 并向其写入值,然后在完成写入值后调用函数 flush 以立即保存共享对象到您的计算机。

因此保存您的面积值将如下所示:

gameSave.data.area = Main.area;
gameSave.flush();

之后,您需要将 area 值设置为游戏启动时保存的任何值:

if (gameSave.data.area !== undefined) Main.area = gameSave.data.area;

我们检查该值是否为 undefined,因为如果您是第一次玩游戏并且该区域尚未保存,它可能还不存在。

如果您想扩展此范围并保存更多值,最后一件事:您只能将特定值写入共享对象。我的理解是你只能写某些 class 类型和原语。如果您尝试编写任何不是原语或异常 classes 的东西,它会自动将该项目转换为 Object 并且它或多或少变得无用。它可以接受且您可能最常使用的 class 是:intuintNumberStringBooleanObjectArray。它还有一些其他的,例如 ByteArrayXML,但您要么根本不使用它们,要么不经常使用它们。如果您想保存任何其他 class 类型,您必须自己添加该功能。