Flash 如何通过StoredObject正确保存类数组?(AS3)

Flash 如何通过StoredObject正确保存类数组?(AS3),flash,actionscript-3,serialization,storage,Flash,Actionscript 3,Serialization,Storage,在我当前的程序中,我有一个类充当相关数据的容器。假设它是一个人类Person有一个私有的myAge:int属性,该属性在程序运行时设置。此外,此人将被添加到数组中并保存。然后调用数组中的所有人并跟踪年龄。以下是主要关注代码: // In the Document class. registerClassAlias("Person", Person); registerClassAlias("AddressBook", AddressBook); myAddressBook = new Add

在我当前的程序中,我有一个类充当相关数据的容器。假设它是一个
Person
有一个私有的
myAge:int
属性,该属性在程序运行时设置。此外,此人将被添加到数组中并保存。然后调用数组中的所有人并跟踪年龄。以下是主要关注代码:

// In the Document class. 
registerClassAlias("Person", Person); 
registerClassAlias("AddressBook", AddressBook);
myAddressBook = new AddressBook();
myAddressBook.addNewPerson(75);


// In the AddressBook class when a new AddressBook is created:
// I load the addressEntries, which is an array that will contain instances of Person class.
sharedObjectAddressEntries=SharedObject.getLocal(“storedAddressEntries”)

然后我在数组中循环显示每个年龄。需要注意的重要一点是,只有在当前程序加载期间设置的年龄。以前运行的所有人都保存在数组中,因为数组中仍有人,但他们的所有年龄现在都设置为0


对此,我将不胜感激,我似乎找不到任何帮助。

本文将帮助您找到问题的解决方案。


勾选“不要直接引用对象,只使用游戏数据,而不要使用实际的游戏对象。”特别是段落

好的,在谷歌输入正确的术语后,我发现了以下要点:

如果一个类没有实现,也没有从 实现IExternalizable接口,然后实现 类将使用公共成员的默认机制序列化 因此,类的私有、内部和受保护成员 将不可用。”

所以,这就是我的私人信息无法保存的原因。 解决方案是实现IExternalizable。我是这样编码的,就像一个符咒:

public class Person implements IExternalizable
public function writeExternal(output:IDataOutput):void {

        output.writeInt(myAge);
    }

    public function readExternal(input:IDataInput):void {

        myAge = input.readInt();
    }

现在看来很容易,哈哈。请注意,我还需要注册类别名来保存自定义类。不过没什么大不了的。希望其他人能够

感谢您提供的链接,但是这似乎只提供了一个解决方案,如果有一个实例需要保存,对于一个可能有更多对象的数组,我认为它会很快变得拥挤。我昨天发现了一种似乎很有效的方法,但无论如何还是要谢谢你!
public class Person implements IExternalizable
public function writeExternal(output:IDataOutput):void {

        output.writeInt(myAge);
    }

    public function readExternal(input:IDataInput):void {

        myAge = input.readInt();
    }