读取自定义对象的字节数组时遇到问题。任何帮助表示赞赏
public class CustomObject extends Object {
public function CustomObject() {
public var _x:Number = 100
public var _y:Number = 10
public var _z:Number = 60
}
}
var cObj:CustomObject = new CustomObject()
var bytes:ByteArray = new ByteArray()
bytes.writeObject(cObj)
bytes.compress()
//read
try { bytes.uncompress() } catch (e:Error) { }
var obj:CustomObject = bytes.readObject() as CustomObject
trace(obj) // null why?!
trace(obj._z) // Obviously - TypeError: Error #1009: Cannot access a property or method of a null object reference.
最佳答案
您要做的是使用registerClassAlias方法来注册类型信息和数据。这样,Flash就会知道如何序列化/反序列化您的对象。这是来自Adobe的documentation的一些示例代码:
registerClassAlias("com.example.eg", ExampleClass);
var eg1:ExampleClass = new ExampleClass();
var ba:ByteArray = new ByteArray();
ba.writeObject(eg1);
ba.position = 0;
var eg2:* = ba.readObject();
trace(eg2 is ExampleClass); // true
应当注意,必须序列化的所有类型都必须注册才能保存类型信息。因此,如果您的类型引用了其他类型,则也必须对其进行注册。
关于actionscript-3 - AS3自定义对象到ByteArray,然后到自定义对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3741099/