AS3序列化

时间:2012-06-25 19:04:40

标签: actionscript-3 flex serialization file-io flash-builder

我正在尝试做什么:

- 在工具栏中保存对象,将其拖放到动画片段上(然后它们将成为动画片段的子项)。完成此操作后,我希望能够序列化此对象,以便将其保存到文件中。然后,我可以重新加载这个文件,并继续在这个动画片段上打开/关闭。

我是怎么做的:

public class Serialization {
    public static function serializeToString(value:Object):String{
        if(value==null){
            trace("null isn't a legal serialization candidate");
        }
        var bytes:ByteArray = new ByteArray();
        bytes.writeObject(value);
        bytes.position = 0;
        var be:Base64Encoder = new Base64Encoder();
        be.encode(bytes.readUTFBytes(bytes.length));
        return be.drain();
    }

    public static function readObjectFromStringBytes(value:String):Object{
        var dec:Base64Decoder=new Base64Decoder();
        dec.decode(value);
        var result:ByteArray=dec.drain();
        result.position=0;
        return result.readObject();
    }      
}

这是调用函数/将其写入文件的地方:

        var fr:FileReference = new FileReference;
        fr.addEventListener(Event.COMPLETE, success);
        var txtString:String = new String();
        txtString = save.Serialization.serializeToString(pagePic);
        trace(txtString);
        fr.save(txtString, "test.txt");

不幸的是,txtString似乎是空白的。我接近这个错误吗?

附注: 这是为移动平台开发的。

1 个答案:

答案 0 :(得分:1)

不幸的是,MovieClips,Sounds和其他资源无法序列化。我的解决方案是创建一个自定义类,它将存储我的所有属性并在加载时重新分配它们,或者只是在保存/加载时写入/解析文本文件。