即使在单独的游戏会话之后,我如何保持变量的一致性?
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") 的共享对象。这样您就可以跨多个游戏访问保存的变量。
现在要保存变量,您只需在共享对象上使用 data
Object 并向其写入值,然后在完成写入值后调用函数 flush
以立即保存共享对象到您的计算机。
因此保存您的面积值将如下所示:
gameSave.data.area = Main.area;
gameSave.flush();
之后,您需要将 area
值设置为游戏启动时保存的任何值:
if (gameSave.data.area !== undefined) Main.area = gameSave.data.area;
我们检查该值是否为 undefined
,因为如果您是第一次玩游戏并且该区域尚未保存,它可能还不存在。
如果您想扩展此范围并保存更多值,最后一件事:您只能将特定值写入共享对象。我的理解是你只能写某些 class 类型和原语。如果您尝试编写任何不是原语或异常 classes 的东西,它会自动将该项目转换为 Object
并且它或多或少变得无用。它可以接受且您可能最常使用的 class 是:int
、uint
、Number
、String
、Boolean
、Object
和 Array
。它还有一些其他的,例如 ByteArray
和 XML
,但您要么根本不使用它们,要么不经常使用它们。如果您想保存任何其他 class 类型,您必须自己添加该功能。
我有一个存储数字的变量area
。
当应用程序重新启动时,它会重置回其原始值。如何在关闭后保持 area
持久?
我正在为 Android
使用 Flash CS6您必须保存变量。有多种方法可以做到这一点,但使用 SharedObject 是最简单的 IMO。
首先,您实际上并没有创建 SharedObject
class 的新实例,而是调用了静态函数 getLocal
并设置了您的变量。所以在你的程序开始附近的某个地方,你会想要这样的东西:
var gameSave:SharedObject = SharedObject.getLocal("gameSave");
这要么创建一个新的本地永久共享对象(如果不存在),要么在您的计算机上获取具有相同初始化名称 ("gameSave") 的共享对象。这样您就可以跨多个游戏访问保存的变量。
现在要保存变量,您只需在共享对象上使用 data
Object 并向其写入值,然后在完成写入值后调用函数 flush
以立即保存共享对象到您的计算机。
因此保存您的面积值将如下所示:
gameSave.data.area = Main.area;
gameSave.flush();
之后,您需要将 area
值设置为游戏启动时保存的任何值:
if (gameSave.data.area !== undefined) Main.area = gameSave.data.area;
我们检查该值是否为 undefined
,因为如果您是第一次玩游戏并且该区域尚未保存,它可能还不存在。
如果您想扩展此范围并保存更多值,最后一件事:您只能将特定值写入共享对象。我的理解是你只能写某些 class 类型和原语。如果您尝试编写任何不是原语或异常 classes 的东西,它会自动将该项目转换为 Object
并且它或多或少变得无用。它可以接受且您可能最常使用的 class 是:int
、uint
、Number
、String
、Boolean
、Object
和 Array
。它还有一些其他的,例如 ByteArray
和 XML
,但您要么根本不使用它们,要么不经常使用它们。如果您想保存任何其他 class 类型,您必须自己添加该功能。