As3 Copy object

佐手、 提交于 2019-12-07 12:53:25

问题


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 ?


回答1:


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




回答2:


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.



来源:https://stackoverflow.com/questions/6260342/as3-copy-object

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!