如何克隆对象?

How can I clone an object?

我需要克隆一些具有多种实例类型的对象。我使用搜索引擎进行了搜索并找到了一些示例,但是在我测试它们之后出现了错误。

示例:AS3 - Clone an object

import Line;
import OtherClass;

// Set lines
var obj1:Object={
    environmentLine:new EnvironmentLine(),
    lineX:100,
    lineY:100
};
addChild(obj1.environmentLine);

var line:Line = new Line();
line.clone(obj1);


这给我错误:Line.as,第 12 行,第 3 列 1170:函数没有 return 值。

示例:https://gist.github.com/PrimaryFeather/6914861

import com.gamua.flox.*;
import com.gamua.flox.utils.*;
import com.gamua.flox.events.*;

// Set lines
var obj1:Object={
    environmentLine:new EnvironmentLine(),
    lineX:100,
    lineY:100
};
addChild(obj1.environmentLine);

var clone:Object = new cloneObject(obj1);

此代码向我发出警告:类型错误:错误 #1064:无法将方法 global/com.gamua.flox.utils::cloneObject() 作为构造函数调用。 在 Untitled_07_fla::MainTimeline/frame1()

示例:https://code.google.com/p/as3-commons/source/browse/trunk/as3-commons-lang/src/main/actionscript/org/as3commons/lang/ObjectUtils.as?r=1784

import org.as3commons.lang.ObjectUtils;

var num:int = 0;

// Set lines
var obj1:Object={
    environmentLine:new EnvironmentLine(),
    lineX:100,
    lineY:100
};
var objectUtils:ObjectUtils = new ObjectUtils();
objectUtils.clone(obj1);

这给了我错误:org\as3commons\lang\ObjectUtils.as,第 211 行,第 69 列 1046:类型未找到或不是编译时常量:IIterator.

哪个最适合克隆对象?如何修复错误?或者有什么好的图书馆吗?

博迪,您应该在 Google 上搜索更多内容。这是很多地方讨论得很好的话题:

https://gist.github.com/PrimaryFeather/6914861

http://www.tomauger.com/2009/flash-actionscript/actionscript-3-gotchas-copy-by-reference-deep-copy-and-read-only-objects

AS3 - Clone an object