ArrayCollection浅复制没什么好说的。
深层复制一般网上的方法是通过ObjectUtils的clone或者copy方法(用byteArray实现)
但这里有一个问题,当ac里面放的不是动态类而是密封类时,数据虽然复制了,但类型信息丢失了。
实现方法:通过flash.net.registerClassAlias()方法向Flash Player注册类型信息。
此方法注册该类,以便该类的实例对象都可以从二进制反序列化回原对象。
以下为示例代码
深层复制一般网上的方法是通过ObjectUtils的clone或者copy方法(用byteArray实现)
newAC = ObjectUtils.clone(oldAC) as ArrayCollection
但这里有一个问题,当ac里面放的不是动态类而是密封类时,数据虽然复制了,但类型信息丢失了。
实现方法:通过flash.net.registerClassAlias()方法向Flash Player注册类型信息。
此方法注册该类,以便该类的实例对象都可以从二进制反序列化回原对象。
以下为示例代码
public static function copy(source:ArrayCollection):ArrayCollection{
if(source == null)
return null;
if(source.length == 0)
return new ArrayCollection();
var item:Object = source.getItemAt(0);
var className:String = getQualifiedClassName(item);
registerClassAlias(className, getDefinitionByName(className) as Class);
return ObjectUtil.copy(source) as ArrayCollection;
}