对象的Flash复制 - 克隆库?

时间:2009-05-07 03:09:57

标签: flex flash actionscript-3 clone

这可能是一个非常简单的问题,我只是没有最模糊的方法。

我有一个我想要复制的对象,并且不知道如何去做。这是我的尝试:

var myObj = new ObjectClass();
var duplicate = myObj;
duplicate = null;
myObj.function(); // Error: Null reference

ObjectClass非常庞大,无法创建并创建自己的子级,我相信其中可能还有一些单例类。

有没有办法轻易复制一些东西?

编辑:看起来我正在寻找没有AS3功能的“克隆”,而且你无论如何都无法克隆私人数据。有人知道一个库或一个解决方法来克隆一堆私人数据吗?

2 个答案:

答案 0 :(得分:4)

我从一些博客那里得到了这个util函数,不记得从哪里来,所以我不能给予功劳。但它不适用于bitmapdata。无论如何它是:

public static function copy(o:Object):Object 
{
    var bytes:ByteArray = new ByteArray( );
    bytes.writeObject( o );
    bytes.position = 0;
    return bytes.readObject( );
}

用法:
registerClassAlias(“com.tests.TestClass”,TestClass); var testCopy:TestClass = TestClass(ObjectUtil.copy(test));

答案 1 :(得分:1)

您可以使用ObjectUtil.copy()(Flex库)。但你是对的,它不支持私人数据。所以这是一个黑暗的镜头,但我想知道你是否使用ByteArray.writeObject()将其序列化为AMF,如果这将复制私人数据?可能值得一试。