有时我们需要克隆一个对象。但是如果一个显示对象有一些子对象并使用如下函数:
function clone(source:*):*
{
var b:ByteArray = new ByteArray();
b.writeObject(source);
b.position = 0;
return(b.readObject());
}
但结果没有孩子……所以我该怎么做 ?
不幸的是,在大多数情况下,在动作脚本中自动克隆对象是浪费时间。
您的代码片段是正确的,但是序列化/反序列化通过ByteArray
无法执行真正的深复制,即复制所有引用和容器。ByteArray
技术仅适用于非引用数据类型(Number
, int
, String
, etc.)
因此,没有灵丹妙药,只有一种足够的解决方案 - 编写clone()
手动为您的班级提供方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)