HI,
Often times i need to copy an Array of Graphics and it is not that easy. For some reason the ESRI objects fail when you use the ObjectUtil.copy() function. Below is a bit more code, consisting of 3 functions which is clone your Graphic objects (and anything else) when you needs to get deep clones or copies.
Let me know if you have any questions!
Thanks,
Pete
// These following 3 functions are used to deep
// clone objects.
public static function deepClone(source:Object):Object {
var clone:Object;
if(source) {
clone = newSibling(source);
if(clone) {
copyData(source, clone);
}
}
return clone;
}
private static function newSibling(sourceObj:Object):* {
if(sourceObj) {
var objSibling:*;
try {
var classOfSourceObj:Class = getDefinitionByName(getQualifiedClassName(sourceObj)) as Class;
objSibling = new classOfSourceObj();
}
catch(e:Object) {}
return objSibling;
}
return null;
}
private static function copyData(source:Object, destination:Object):void {
//copies data from commonly named properties and getter/setter pairs
if((source) && (destination)) {
try {
var sourceInfo:XML = describeType(source);
var prop:XML;
for each(prop in sourceInfo.variable) {
if(destination.hasOwnProperty(prop.@name)) {
destination[prop.@name] = source[prop.@name];
}
}
for each(prop in sourceInfo.accessor) {
if(prop.@access == "readwrite") {
if(destination.hasOwnProperty(prop.@name)) {
destination[prop.@name] = source[prop.@name];
}
}
}
}
catch (err:Object) {
;
}
}
}