Search code examples
apache-flexflashactionscript-3clone

Flash duplication of an Object - Cloning library?


This is probably a very simple question, I just don't have the foggiest how to go about it.

I have an Object that I want to duplicate, and don't know how to go about it. Here's my attempt:

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

The ObjectClass is very large, inherets and creates children of it's own, and I'm sure there's probably a few singleton classes in there.

Is there a way to duplicate something easily?

Edit: Looks like I'm looking for "Cloning", for which there is no AS3 function, and you apparantly can't clone Private data anyway. Anyone know of a library or a workaround for cloneing a bunch of private data?


Solution

  • I got this util function from some blog, can't remember from where so I can't give the credit. It wouldn't work with bitmapdata though. Anyway here it is:

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

    Usage:
    registerClassAlias("com.tests.TestClass", TestClass); var testCopy:TestClass = TestClass(ObjectUtil.copy(test));