Я пытаюсь сериализовать и десериализовать массив байтов в строку, используя Base64 для as3.
Вот мой код
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;
}
Я проверил это, и сериализация работает нормально, но
Reading Object Failed!!
ArgumentError: Error #1063: Argument count mismatch on System::Action(). Expected 2, got 0.
- это ошибка, которую я получаю после вызова deserializedObj = deserialized.readObject();
Должен ли я получить эту ошибку, если я просто пытаюсь поместить это в объект? Я пока не пытаюсь поместить его в объект класса действия, но если это так, то у получаемого действия нет параметров, которые были изначально внутри.