我有一个movieclips的集合,我想在每次创建一个新对象时创建一个实例的克隆(一个新实例)。
例如
var s:Star = new Star(); // star-shaped movielcip
addChild(s);
// then I want to duplicate an instance of s and add it beside s
对于上面的示例,使用不同的名称创建一个新实例非常简单,只需将其添加到显示列表即可。但我有一个我想要作为一个群体克隆的对象列表......?
答案 0 :(得分:2)
下面的代码以克隆对象而闻名。它是最深刻和最有活力的。
...
function clone(orjObj:Object):Object {
var copyObj:ByteArray = new ByteArray();
copyObj.writeObject(orjObj);
copyObj.position = 0;
return(copyObj.readObject());
}
var s2:Star = clone(s);
s2.x = s.x + s.width;
s2.y = s.y;
addChild(s2);
答案 1 :(得分:1)
一个选项是您可以创建一个数组来存储您的引用,因此您不需要显式命名它们。使用摩西的代码......
var clones:Array = new Array();
for each (var star:Star in [s, s2, s3, s4, s5]) {
clones.push(clone(star));
}
trace(clones.length); // 5
这将产生一个包含5颗克隆恒星的阵列。它需要的代码量最少,但是由您来确定您知道之后的哪个星号。