先上 一个 方法 :
public static function clone(target:Object):*{
var targetMovie:Class = target.contructor;
var clone:* = new targetMovie();
return clone;
}
在 AS3 中 有一些 类是 有一些 深度复制的 方法的 如 : BitMapData 但是 像 Array , Vector , MovieClip 都是 木有的 那 用 上面的 方法 是 最好的选择 ..
当然 在 Game 当中 , 也可以 在 Flash美术资源中(SWF) , 复制 这些 东西的:
public static function getClazz(className : String,loader : Loader = null) : Class{
if(null == loader){
loader = UI_LOADER;
}
return loader.contentLoaderInfo.applicationDomain.getDefinition(className) as Class;
}
public static function getMovieClip(name : String,loader : Loader = null) : MovieClip{
try{
var clazz : Class = getClazz(name,loader);
if(null != clazz){
return new clazz() as MovieClip;
}
}catch(e : Error){
return null;
}
return null;
}
利用 类似getMovieClip 就可达到深度复制的效果了 .. 这个 仅限于 DisplayObject
转载于:https://blog.51cto.com/aonaufly/1241324