序列化扩展 MovieClip > DisplayObject 的 class
Serialize a class that extends MovieClip > DisplayObject
我一直在许多自定义 类 上使用 ByteArray 我一直需要 store/load,但是 ByteArray 似乎从未序列化扩展 MovieClip 的自定义 class/object正确。读取时总是缺少数据或空值。
我在这里读到 AMF 无法序列化 displayObjects 并且想知道是否有我可以使用的好的解决方案? (缺少将数据对象分流到 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
}
正在存储的对象
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)
}
这就是为什么他们说显示和数据应该分开。
以下是解决此问题所需的心态:
- 多边形不是可显示的东西。这是一个点列表
是相连的。也许它有基于那些的辅助信息
点像多边形的区域或者它的凸面。这里可能还有其他内容。
- 然后是如何绘制多边形的资料。它有线条粗细,线条颜色。也许是一个填充。等等
- 最后但同样重要的是多边形的实际绘图。这是你的
DisplayObject
.
根据您要存储的内容,您可以保存易于序列化的多边形数据和绘图配方数据。
在反序列化时,您实例化适当的 class (DisplayObject
) 并将数据输入其中。
tl,博士:MVC
我一直在许多自定义 类 上使用 ByteArray 我一直需要 store/load,但是 ByteArray 似乎从未序列化扩展 MovieClip 的自定义 class/object正确。读取时总是缺少数据或空值。
我在这里读到 AMF 无法序列化 displayObjects 并且想知道是否有我可以使用的好的解决方案? (缺少将数据对象分流到 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
}
正在存储的对象
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)
}
这就是为什么他们说显示和数据应该分开。
以下是解决此问题所需的心态:
- 多边形不是可显示的东西。这是一个点列表 是相连的。也许它有基于那些的辅助信息 点像多边形的区域或者它的凸面。这里可能还有其他内容。
- 然后是如何绘制多边形的资料。它有线条粗细,线条颜色。也许是一个填充。等等
- 最后但同样重要的是多边形的实际绘图。这是你的
DisplayObject
.
根据您要存储的内容,您可以保存易于序列化的多边形数据和绘图配方数据。
在反序列化时,您实例化适当的 class (DisplayObject
) 并将数据输入其中。
tl,博士:MVC