0
我一直在许多自定义类上使用ByteArray,我一直需要存储/加载,但是ByteArray似乎永远不会序列化正确扩展MovieClip的自定义类/对象。读取时总是缺少数据或空值。序列化扩展MovieClip的类> DisplayObject
我读过这里,AMF无法序列化displayObjects,并想知道是否有一个很好的解决方案,我可以使用? (分流数据OBJ到JSON和喂养字符串返回到我的储蓄短。)
进入和ByteArray
public static function _SaveTRData(trData:Object):String{
if(_trackerComp == null){
return "ERR: -1";
}
var resp:String = "";
var bytes:ByteArray = new ByteArray();
bytes.writeObject(trackerData);
resp = _trComp.SaveTRData(bytes);//to SQLlite db methods
if(resp != ""){
_tr.UpdateStatusMessage(resp);
}
return resp;
}
public static function _GetTRData(fileName:String):Object{
if(_trComp == null){
return null;
}
var resp:ByteArray = _trComp.GetTRData(fileName);//from SQLlite db methods
resp.position = 0;
return(resp.readObject());//returned object is passed into graphics pipeline to redraw contained data elements
}
对象(S)的输出被存储
var trackerData:Object = {arrPolys:new Array(), arrLabels:new Array()};
trackerData.arrPolys = maps.arrPolys();
trackerData.arrLabels = maps.arrLabels();
//Truncated, contains more arrays of objects...
//Each object in arrPolys is a
public class Polygon extends MovieClip{
//3 private uints
//3 private bools
//1 private array
//3 private custom class Line which extends Shape
}
//Each object in arrLabels is a
public class Label extends MovieClip{
//Several private strings
//Several private dynamically generated graphic components
//Several private label specifications (Strings, Ints, Booleans)
}
显示一些代码?你在使用registerClassAlias吗? – Nemi
经过一些测试后,ByteArray将不会序列化扩展MovieClip的类(一个显示对象)中的任何数据。 我正在用IDataInput和IDataOutput调查IExternalizable,但保持与readExternal()和writeExternal()的签名错误 – Reahreic
如果您需要将MovieClip存储在ByteArray中,那么您的设计很糟糕。你应该提取一些数据模型。该数据模型可以存储为ByteArray。数据恢复时应更新MC。看看Model-View-Controller或Model-View-Presenter模式。 –