4

这可能是一个非常简单的问题,我只是不知道如何去做。

我有一个要复制的对象,但不知道该怎么做。这是我的尝试:

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

ObjectClass 非常大,继承并创建了它自己的子类,我敢肯定那里可能有一些单例类。

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

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

4

2 回答 2

4

我从某个博客中获得了这个 util 功能,不记得是从哪里得到的,所以我不能给予信任。但它不适用于位图数据。无论如何,它是:

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));

于 2009-05-07T04:52:34.243 回答
1

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

于 2009-05-07T04:33:06.100 回答