Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

As3 Copy object

sometimes we need clone a object.but if a displayObject has some children and use the function like this:

function clone(source:*):*
{
    var b:ByteArray = new ByteArray();
    b.writeObject(source);
    b.position = 0;
    return(b.readObject());
}

but the result has no children.. .. . so what should I do ?

like image 637
Lee Avatar asked May 31 '26 08:05

Lee


2 Answers

Unfortunately automatic cloning of objects in actionscript is a waste of time in the majority of cases.

Your snippet is right, but serialization/deserialization via ByteArray cannot perform real deep copy, i.e. copying of all references and containers. ByteArray technique will work only with non-reference data types (Number, int, String, etc.)

So there is no silver bullet and only one adequate solution - to write the clone() method for your class manually.

like image 130
Dmitry Sapelnikov Avatar answered Jun 02 '26 19:06

Dmitry Sapelnikov


I didn't have to program a clone-method myself yet, but i found a way that might do the trick. By iterating through all your variables (in an xml-representation), you can copy them in a new instance of your class.

you can find the method i am talking about on this link: http://www.learnosity.com/techblog/index.cfm/2008/2/6/AS3--Looping-over-properties-of-a-class

Let me know if it works, i'm kind of curious myself :)

like image 32
Michiel Standaert Avatar answered Jun 02 '26 20:06

Michiel Standaert



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!