如何将对象保存到文件(AS3 / Air)

时间:2011-10-26 12:47:33

标签: actionscript-3 air filestream iexternalizable

我想要什么? 将我的项目保存在使用Air Application创建的编辑器中

什么是保存? 1对象 - >类型ArrayCollection - >包含 - >来自自己班级的对象......

我的第一次尝试是什么?

var stream :FileStream = new FileStream();
stream.writeObject(myArrayCollection);

问题是什么? myArrayCollection中的对象得到了这个结构:

public class MyClass1
    {
        public var title:String;
        public var description:String;
        public var kindOf:String = "...";
        public var thumbnail:String;
        public var children:ArrayCollection
...}

每个公共var都由FileStream保存....工作正常 在子目录中,arrayCollection是这个类中的对象:

public class MyClass2 extends XMLDocument implements IExternalizable
    {

        public const kindOf:String = "Seite";

        [Bindable]
        public var title:String;
        public var contenBox:OwnClass; //extended spark Group

public function get childrens():ArrayCollection
        {
            var childs: ArrayCollection = new ArrayCollection();

            var i:int = 0;
            while(i > (contenBox.container as spark.components.Group).numElements)
            {
                childs.addItem((contenBox.container as spark.components.Group).getElementAt(i));
                i--;
            }

            return childs;
        }

        public function readExternal(input:IDataInput):void
        {
            trace("hello i'am reading");
        }

        public function writeExternal(output:IDataOutput):void
        {
            trace("hello i'am writing");
            output.writeObject(children);
        }

现在问题... fileStream包含带有var“title”的MyClass2对象,但是没有子ArrayCollection ......控制台没有显示跟踪: - /

1 个答案:

答案 0 :(得分:1)

您是否尝试过序列化对象?您可以将其序列化为XML,而不是在读取时再次返回。 它似乎是一个很好的库Flexxb

其他方式会将文件写为Bytearray的原始二进制文件,如解释here

希望它有所帮助!