actionscript-3 - AS3自定义对象到ByteArray,然后到自定义对象

标签 actionscript-3 object bytearray

读取自定义对象的字节数组时遇到问题。任何帮助表示赞赏

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/

相关文章:

gwt - 二进制数据和GWT

java - 是否可以从其字节数组内容中找到图像文件扩展名?

java - 如何在 Java 中有效地改变字节数组的字节顺序

Java - 这两个对象如何相互相等?

arrays - 从函数返回对象数组

apache-flex - 访问未定义的 mx.core :FlexGlobals

iphone - 适用于 iOS 的高性能 ActionScript 移动游戏引擎

c# - 如何在 C# 中将不同的对象传递给同一个函数

actionscript-3 - 执行 Flashbuilder 应用程序导致错误 2148 只有 local-with-filesystem 和受信任的本地 SWF 文件可以访问本地资源

actionscript-3 - 如何在 ActionScript 3.0 中使用 FlashVars?