Ограничения ByteArray при клонировании
Использую общепринятый метод
Код AS3:
Цитата:
Код AS3:
Код AS3:
Добавлено через 23 минуты То есть ошибка происходит когда я делаю var copy:MemberType = Utils.clone(mt); А когда делаю var copy:MemberType = Utils.clone(mt) as MemberType; происходит Цитата:
public function draw(memberType:MemberType, xDelta:int, yDelta:int) |
Мне надо копию создать, чтобы её модифицировать независимо.
Добавлено через 3 часа 3 минуты В общем поскольку описанное повсюду копирование не работает в данной ситуации, а ничего получше мне не подсказали, плюс вдобавок нельзя перегрузить конструктор, а я бы просто сделал копирующий конструктор, то сделал так: Код AS3:
|
Такое копирование возможно только для DTO/VO объектов, не имеющих в своем составе методов.
Воспользуйтесь GOF-паттерном Prototype. |
Спасибо, я уже сделал всё, но про прототип я всё равно собираюсь почитать, т.к. ещё два часа назад собирался, только вот своя идея в голову пришла, и отложил чтение. У меня GoF есть даже в бумажном виде. Кстати то решение что я выше привёл, чуток криво. Всё же мне понадобилось
this.solutionType = Utils.clone(clonedObject.getSolutionType()); И я из-за этой забывчивости, так и пропарился с отладкой. Ну ладно хоть алгоритм заработал, находит расстановку ферзей, чтобы не били друг друга. |
У нас (AS) поручают копирование объекта самому себе.
Нечто типа Код AS3:
Добавлено через 10 минут Однако копии визуальных объектов, созданных в authority mode (без копирования текущего состояния объекта. только первоначальный вид ) можно сделать в рантайме совершенно просто. Достаточно воспользоваться ссылкой на их конструктор. См. по теме http://www.flasher.ru/forum/showthread.php?p=912025 |
А таки почему бы не почитать в хелпе про registerClassAlias, там ещё и примерчики есть) Или название так не понравилось?
С методами обьекты вполне так копируются. Другое дело, что не все, но вот этот MemberType - да. |
Глубокоуважаемый -Де-, ваше сообщение просто исчезло до того, как у меня появилось время всё проверить. Я собирался глянуть про этот метод, но утерял его название, с исчезновением вашего сообщения.
Димарик, ваши идеи конечно интересны, но всё же мне не слишком близка идея забить на инкапсуляцию. Впрочем завтра ещё раз гляну на ваши предложения, так как сегодня уже время позднее. Но надеюсь таки вы поняли, почему я сделал this.solutionType = Utils.clone(clonedObject.getSolutionType()); а не просто this.solutionType = Utils.clone(this.solutionType); Опять же думаю переделать свою программу, с использованием SpringActionScript. Нужна практика использования этого замечательного инструмента. А там кругом геттеры и сеттеры и всякие там инъекции, так что возможно придётся обдумать насчёт перенесения многого из конструкторов в сеттеры, хотя я в ЭкшнСкрипте пока в Спринг сильно не погружался, я разделяю работу и домашнее программирование. На работе Джава, дома ЭкшнСкрипт. |
dimarik, а почему сделать полную копию DO сложно?
Насколько я помню единственная проблема была в graphics - но в 10-ке появился метод copyFrom. Ну и в addChild сделанное вне конструктора, но эта проблема тоже решаема. |
Тигра, сделать копию любого объекта во флеше тяжело.
|
Часовой пояс GMT +4, время: 22:54. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.