Actionscript 3 从字符串解码后将字节数组读入对象时出现问题。
我正在尝试使用as3的Base64将字节数组序列化并反序列化为字符串 这是我的密码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);
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;