0

私は何をしたいですか?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
...}

すべての public 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はありません...コンソールにはトレースが表示されません:-/

4

1 に答える 1

1

オブジェクトのシリアル化を試みましたか? それを XML にシリアライズし、読み取り時に再度戻すことができます。これに適したライブラリはFlexxbのようです

ここで説明したように、Bytearray を使用して生のバイナリとしてファイルを書き込む他の方法

それが役に立てば幸い!

于 2011-12-15T11:25:52.963 に答える