`
lipbb
  • 浏览: 67522 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

flex 中 ArrayCollection的深层复制

阅读更多
ArrayCollection浅复制没什么好说的。
深层复制一般网上的方法是通过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;
}
0
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics