Actionscript 3 从字符串解码后将字节数组读入对象时出现问题。

Actionscript 3 从字符串解码后将字节数组读入对象时出现问题。,actionscript-3,bytearray,Actionscript 3,Bytearray,我正在尝试使用as3的Base64将字节数组序列化并反序列化为字符串 这是我的密码 public function Serialize(vector:Vector.<Action>):String { var bytes:ByteArray = new ByteArray(); var serialized:String = ""; registerClassAlias("Action", Action);

我正在尝试使用as3的Base64将字节数组序列化并反序列化为字符串

这是我的密码

public function Serialize(vector:Vector.<Action>):String
    {
        var bytes:ByteArray = new ByteArray();
        var serialized:String = "";

        registerClassAlias("Action", Action);

        try { bytes.writeObject(vector); trace("Unserialized bytes:\n" + bytes + "\n"); }
        catch (e:Error) { trace("Writing object Failed!!\n" + e); }

        bytes.position = 0;
        bytes.compress();
        trace("Compressed bytes:\n" + bytes + "\n");

        return Base64.encode(bytes);
    }

public function Deserialize(serializedString:String):Vector.<Action>
    {
        var deserialized:ByteArray = new ByteArray();
        var deserializedObj:Object = new Object();
        var newVector:Vector.<Action> = new Vector.<Action>();

        try { deserialized = Base64.decode(serializedString); trace("Deserialized bytes:\n" + deserialized + "\n"); }
        catch (e:Error) { trace("Decoding Failed!!\n" + e); }

        deserialized.position = 0;
        deserialized.uncompress();
        trace("Uncompressed bytes:\n" + deserialized + "\n");

        try { deserializedObj = deserialized.readObject(); trace("Moving bytes into an object" + deserializedObj); }
        catch (e:Error) { trace("Reading Object Failed!!\n" + e); }

        for each(var a:Action in deserializedObj)
        {
            trace(a);
            newVector.push(a);
        }

        return newVector;
    }
是调用反序列化dobj=deserialized.readObject()后出现的错误
如果我只是想把它放到一个对象中,我应该得到那个错误吗?我还没有尝试将其放入action类对象中,但是如果它是action类对象,那么它得到的action没有最初包含的参数。

我从未见过错误系统:action 我唯一看到的可能是一个问题

试着移动

deserialized.uncompress();
在上面

deserialized.position = 0;

看起来
Action
有一个接受两个参数的构造函数(没有默认值)
readObject
显然是使用非默认构造函数构造对象


更改
操作
以使其构造函数参数具有默认值,并查看这是否有帮助。

在反序列化之前是否总是调用Serialize?如果不这样做,那么在反序列化之前不会调用registerClassAlias为什么?如果该位置尚未处于0,则应在解压缩之前。否则,您将得到一个有趣的解压缩错误。此外,在调用
解压缩
后,将位置设置为0也没有意义,因为用户会说这应该自动完成。正如我所说,这是一个在黑暗中拍摄的镜头。但没关系,因为它都是固定的。这很有效。当我发布这个问题时,我想是这样的,但我一直在沮丧地工作,从来没有想过这会是真正的问题。
deserialized.position = 0;