克隆类的实例(显示对象)

时间:2011-06-03 23:36:30

标签: actionscript-3 clone

我有一个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

对于上面的示例,使用不同的名称创建一个新实例非常简单,只需将其添加到显示列表即可。但我有一个我想要作为一个群体克隆的对象列表......?

2 个答案:

答案 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颗克隆恒星的阵列。它需要的代码量最少,但是由您来确定您知道之后的哪个星号。