Клонировать экземпляр класса (экранный объект) - PullRequest
0 голосов
/ 04 июня 2011

У меня есть коллекция видеороликов, я хотел бы создавать клон (новый экземпляр) экземпляра каждый раз, когда создаю новый объект.

Например

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 ]

2 голосов
/ 04 июня 2011

Код ниже очень известен тем, что клонировал объекты.Это самый глубокий и динамичный.

...
    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 голос
/ 04 июня 2011

Моисей 'решение является правильным. Какова цель клона, когда вам не нужно знать имя клона, чтобы ссылаться на него?

Один из вариантов - вы можете создать массив для хранения ваших ссылок, чтобы вам не нужно было явно указывать их имена. Используя код Моисея ...

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 клонированных звезд. Требуется наименьшее количество кода, но вам нужно убедиться, что вы знаете, какая звезда, какая потом.

...