Просмотр полной версии : Копирование 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
Копировать 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, спасибо!
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 переопределены. Обздался.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.