Flash дублирование библиотеки объектов - клонирования? - PullRequest
4 голосов
/ 07 мая 2009

Это, наверное, очень простой вопрос, я просто не представляю, как это сделать.

У меня есть Объект, который я хочу скопировать, и я не знаю, как это сделать. Вот моя попытка:

var myObj = new ObjectClass();
var duplicate = myObj;
duplicate = null;
myObj.function(); // Error: Null reference

ObjectClass очень большой, создает и создает собственных дочерних элементов, и я уверен, что там, вероятно, есть несколько одноэлементных классов.

Есть ли способ легко что-то дублировать?

Редактировать: Похоже, я ищу "Клонирование", для которого нет функции AS3, и вы все равно не можете клонировать личные данные. Кто-нибудь знает библиотеку или обходной путь для клонирования множества личных данных?

Ответы [ 2 ]

4 голосов
/ 07 мая 2009

Я получил эту функцию из какого-то блога, не могу вспомнить, откуда я не могу отдать должное. Это не будет работать с растровыми данными, хотя. В любом случае вот оно:

public static function copy(o:Object):Object 
{
    var bytes:ByteArray = new ByteArray( );
    bytes.writeObject( o );
    bytes.position = 0;
    return bytes.readObject( );
}

Использование:
registerClassAlias ​​("com.tests.TestClass", TestClass); var testCopy: TestClass = TestClass (ObjectUtil.copy (test));

1 голос
/ 07 мая 2009

Вы можете использовать ObjectUtil.copy() (библиотека Flex). Но вы правы, что он не поддерживает личные данные. Так что это выстрел в темноте, но мне интересно, сериализуете ли вы его в AMF, используя ByteArray.writeObject(), если это скопирует личные данные? Может стоит попробовать.

...