2011-10-26 57 views
0

我想要什麼? 將我的項目保存在使用Air Application創建的編輯器中如何將對象保存到文件(AS3/Air)

什麼是保存? 1 Object - > Type ArrayCollection - > Contains - >自己類的對象...

我的第一次嘗試是什麼?

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 
...} 

每個公共變種被保存在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包含我的MyClass2對象與變量「標題」,但沒有子ArrayCollection ...控制檯不顯示痕跡: -/

+0

很確定我記得在某個地方讀過,你不能在複雜的數據類型上做到這一點。 –

回答

1

你試過序列化你的對象CT?您可以將其序列化爲XML,然後再讀取。 它似乎是一個很好的圖書館是Flexxb

其他方式將寫入文件,與原始的ByteArray的二進制解釋here

希望它能幫助!

相關問題