As3 Copy object

2019-05-10 09:04发布

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 ?

2条回答
Fickle 薄情
2楼-- · 2019-05-10 09:21

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.

查看更多
放我归山
3楼-- · 2019-05-10 09:32

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

查看更多
登录 后发表回答