As3 Копировать объект - PullRequest
       4

As3 Копировать объект

3 голосов
/ 07 июня 2011

иногда нам нужно клонировать object.but, если displayObject имеет несколько дочерних элементов и использовать такую ​​функцию:

function clone(source:*):*
{
    var b:ByteArray = new ByteArray();
    b.writeObject(source);
    b.position = 0;
    return(b.readObject());
}

но у результата нет детей .. ... так что мне делать?

Ответы [ 2 ]

3 голосов
/ 07 июня 2011

К сожалению, автоматическое клонирование объектов в ActionScript в большинстве случаев является пустой тратой времени.

Ваш фрагмент верен, но сериализация / десериализация с помощью ByteArray не может выполнить настоящее глубокое копирование, то есть копирование всехссылки и контейнеры.ByteArray метод будет работать только с нереференсными типами данных (Number, int, String и т. Д.)

Таким образом, не существует серебряной пули и только одно адекватное решение - написатьclone() метод для вашего класса вручную.

1 голос
/ 07 июня 2011

Мне еще не приходилось программировать метод клонирования, но я нашел способ, который мог бы добиться цели.Перебирая все свои переменные (в xml-представлении), вы можете скопировать их в новый экземпляр вашего класса.

Вы можете найти метод, о котором я говорю, по этой ссылке: http://www.learnosity.com/techblog/index.cfm/2008/2/6/AS3--Looping-over-properties-of-a-class

Дайте мне знать, если это работает, мне немного любопытно:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...