如何将自定义对象分配给字节数组? AS3

时间:2014-03-28 15:41:47

标签: actionscript-3 bytearray

我有一个TActor类和一个函数to_bytes(),它应该将它压缩为一个字节数组,如下例所示:http://jacksondunstan.com/articles/1642

 public function to_bytes():ByteArray
 {
        registerClassAlias("TActor",TActor);
        var bytes:ByteArray=new ByteArray();
        bytes.writeObject(this as TActor);
        bytes.position=0;
        trace(bytes.readObject());
        bytes.position=0;
        trace(bytes.readObject() as TActor);

        return bytes;
}

但是,第一个跟踪打印未定义,第二个跟踪打印而不是[object TActor]。 我做错了什么?

1 个答案:

答案 0 :(得分:1)

重要的是要注意this关键字返回对象的当前实例。您当前正在尝试将this实例传递给writeObject,这只有在TActor实例化实例时才有效。所以它适用于这种情况:

在某些实例化TActor的类中:

var tactor:TActor = new TActor();
tactor.to_bytes();

然后它应该正确序列化。

正如我们在评论中发现的,TActor属于MovieClip类型,目前您无法在writeObject()类型的对象上使用MovieClip。更具体地说,任何动态类的对象都不能在writeObject中使用。将其更改为Sprite解决了这一特殊情况。