通常我们需要深拷贝flex对象的时候 我们会google到这样的信息
public function DeepClone( target : Object ) : *
{
var myBA:ByteArray = new ByteArray();
myBA.writeObject( target );
myBA.position = 0;
return( myBA.readObject() );
}
这个用来拷贝Array或者其他一些数据类的时候 我们发现他是OK的
但是如果要深拷贝DisplayObject的时候这个函数就会发生运行时错误
在网上发现这么一篇文章
http://www.dannyburbol.com/2009/01/movieclip-clone-flash-as3/
直接跳到Answer5吧 看看怎么复制DisplayObject
public function duplicateDisplayObject(
source:DisplayObject,
autoAdd:Boolean = false
):DisplayObject
{
// create duplicate
var sourceClass:Class = Object(source).constructor;
var duplicate:DisplayObject = new sourceClass();
// duplicate properties
duplicate.transform = source.transform;
duplicate.filters = source.filters;
duplicate.cacheAsBitmap = source.cacheAsBitmap;
duplicate.opaqueBackground = source.opaqueBackground;
if (source.scale9Grid) {
var rect:Rectangle = source.scale9Grid;
// WAS Flash 9 bug where returned scale9Grid is 20x larger than assigned
// rect.x /= 20, rect.y /= 20, rect.width /= 20, rect.height /= 20;
duplicate.scale9Grid = rect;
}
// add to source parent's display list
// if autoAdd was provided as true
if (autoAdd && source.parent) {
source.parent.addChild(duplicate);
}
return duplicate;
}
好了..搞定