我有一个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]。 我做错了什么?
答案 0 :(得分:1)
重要的是要注意this
关键字返回对象的当前实例。您当前正在尝试将this
实例传递给writeObject
,这只有在TActor
实例化实例时才有效。所以它适用于这种情况:
在某些实例化TActor的类中:
var tactor:TActor = new TActor();
tactor.to_bytes();
然后它应该正确序列化。
正如我们在评论中发现的,TActor
属于MovieClip
类型,目前您无法在writeObject()
类型的对象上使用MovieClip
。更具体地说,任何动态类的对象都不能在writeObject中使用。将其更改为Sprite
解决了这一特殊情况。