PDA

Просмотр полной версии : Копирование ArrayСollection


zorexundra
21.09.2011, 16:20
Здравствуйте! Подскажите, пожалуйста, как копировать (клонировать) объект типа ArrayСollection?
Методы глубокого копирования массива, объекта возвращают ошибку "Error #2004: Один из параметров указан неверно."

Dimitry_II
21.09.2011, 17:04
Код в студию!

"Глубокое копирование" - это через потоки? Тогда тем более код.

zorexundra
21.09.2011, 17:18
Код в студию!
Пожалуйста:
function clone(source:Object):*
{
var myBA:ByteArray = new ByteArray();
myBA.writeObject(source); // Error #2004
myBA.position = 0;
return(myBA.readObject());
}
и:
mx.utils.ObjectUtil.copy(myArrayСollection); // Error #2004

alatar
21.09.2011, 17:34
Копировать ArrayCollection особого смысла нет, достаточно скопировать его source и подсунуть в новый ArrayCollection.

А по поводу копирования, надо alias зарегистрировать.

Добавлено через 52 секунды
Вы бы озвучили цель этого копирования.

Dimitry_II
21.09.2011, 18:24
function clone(source:Object):*
{
var myBA:ByteArray = new ByteArray();
myBA.writeObject(source); // Error #2004
myBA.position = 0;
return(myBA.readObject());
}
Шутник :)
function clone(source:Object):* {
var result:Object;
var myBA:ByteArray = new ByteArray();
source.writeObject(myBA);
myBA.position = 0;
result.readObject(myBA);
return result;
}

zorexundra
21.09.2011, 18:34
А по поводу копирования, надо alias зарегистрировать.
- Незнакомое для меня понятие :(

Добавлено через 52 секунды
Вы бы озвучили цель этого копирования.
Собственно в продолжение темы (http://www.flasher.ru/forum/showthread.php?t=167642&page=2).
Мне нужен дубликат этого самого MappedArrayCollection, чтобы иметь возможность вносить в него изменение, не затрагивая исходный объект. Но кажется Вы уже подсказали мне решение:
создать новый MappedArrayCollection и передать в его source клонированный массив источника.
alatar, спасибо!

alatar
21.09.2011, 18:35
Dimitry_II, откуда у Object вдруг появились методы readObject и writeObject, еще и принимающие ByteArray?

Добавлено через 1 минуту
- Незнакомое для меня понятие
http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/net/package.html#registerClassAlias()

Dimitry_II
21.09.2011, 18:53
Упс. Сорри. Брал из работающего кода, только не учел, что writeObject и readObject переопределены. Обздался.