![]() |
|
||||||||||
|
|||||
|
У меня такая проблема:
У меня есть объект который я создаю в классе Main, затем передаю его как параметр в класс Settings. В классе Settings меняю содержимое принятого класса, и диспатчу событие при нажатии на кнопке ОК в классе Settings о том, что значения изменились. По диспатчу в классе Main я перезаписываю изначальный объект переданным, но проблема в том, что он перезаписывается ещё до диспатча, в связи с тем, как я понимаю, что переданный объект это всего лишь ссылка на начальный, соответственно меняя второй мы автоматом меняем первый! Как сделать так чтобы при передаче я создавал отдельный объект никак не связанный с изначальным т.е. надо создать реально новый объект на основании старого! Надеюсь понятно объяснил! ![]() |
|
|||||
|
Да, это всего лишь ссылка на ваш объект созданный в Main. "Перезаписыватся" тока стринги и числа, даже xml и тот Object
![]() Есть несолкько вариантов. Первый сделать метод clone у вашого объекта который будет возвращать созданный такойже объект и которому будет передано состояние клонируемого. И второй который я знаю это паттерн прототип
__________________
мира и гармонии |
|
|||||
|
Цитата:
Можно поподробнее про эти методы?) Как например может выглядеть метод clone? |
|
|||||
|
самое простое
package guiComponents.graphics { public class PaneStyle { public var topColor:uint = 0xC0C0C0; public var bottomColor:uint = 0xCCCCCC; public var borderWidth:uint = 0; public var borderColor:uint = 0xBBBBBB; public var leftTopCorner:uint = 0; public var rightTopCorner:uint = 0; public var leftBottomCorner:uint = 0; public var rightBotomCorner:uint = 0; public var gradientAngle:uint = 90; public var hideBottomBorder:Boolean = false; public function clone():PaneStyle { var panestyle:PaneStyle = new PaneStyle(); panestyle.topColor = topColor; panestyle.bottomColor = bottomColor; panestyle.borderWidth = borderWidth; panestyle.borderColor = borderColor; panestyle.leftTopCorner = leftTopCorner; panestyle.rightTopCorner = rightTopCorner; panestyle.leftBottomCorner = leftBottomCorner; panestyle.rightBotomCorner = rightBotomCorner; panestyle.gradientAngle = gradientAngle; panestyle.hideBottomBorder = hideBottomBorder; return panestyle; } }//end class }//end package у Rectangle есть clone() например http://etcs.ru/as3_tips_and_tricks/d...ith_bytearray/
__________________
мира и гармонии Последний раз редактировалось 3p.station; 14.08.2011 в 02:12. |
|
|||||
|
ну это понятно, а чтото поизящнее? Интуиция подсказывает что тут должен быть какой то хитрый for in
![]() Добавлено через 5 минут Не силён я в ByteArray)) Пока что не могу въехать каким это магическим образом он может скопировать весь объект)) Последний раз редактировалось iNils; 14.08.2011 в 12:36. |
|
|||||
|
ну writeObject , не ?
Добавлено через 2 минуты так ?
__________________
мира и гармонии |
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
Цитата:
|
|
|||||
|
Цитата:
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 22:01. |
|
|
« Предыдущая тема | Следующая тема » |
|
|