![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Вопрос был: "возможно ли в классе создать экземпляр класса". я сказал - да, более того: так практически всегда поступают если нужно определить метод клонирования.
__________________
Отряд Котовскага |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
блин.. Клонирование я упомянул, как пример создания экземпляра класса внутри класса. Т.е. был вопрос: "так можно?". Я ответил : "Да - причём, так поступают очень часто, например, при клонировании."
![]() по сути самого топика: тоже можно сделать через клонирование. ParentClass{ private var childList:IClonable //детки ... // добавляем листенер на клик private function initChild(child:IClonable ):void { addChild(child); child.addEventListener(MouseEvent.CLICK,cloneChild); // и меняем например, координаты child.x=0; child.y=0; } ... // клонируем private function cloneChild(e):void { var child:IClonable = e.target as IClonable ; var cloneChild: IClonable = child.clone(); initChild(cloneChild); } } например: у объектов есть генетические параметры width/height/speed. кроме того есть время жизни/интервал размножения и случайный вектор направления. на поле появляется еда которую едят рыбы ( наверное больше под абстракцию подходит микроорганизмы, размножающиеся делением). время жизни напрямую зависит от времени и количества съеденной еды - голодные умирают. живые размножаются) количество съеденой еды зависит от скорости и габаритов. но можно ввести обратную связь - для большого тела надо больше еды.. для более быстрых тоже.. коэффициенты всякие тоже можно сделать наследуемыми с мутациями.. Академический интерес: варируя разные генетические коэффициенты и параметры окружающей среды посмотреть какая популяция получится.)))
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 22.03.2010 в 10:03. |
|
|||||
|
Регистрация: Mar 2010
Сообщений: 6
|
самый типичный пример ето Event::clone , так что вопрос, отнюдь, не чисто теоретический.
|
|
|||||
|
Регистрация: Feb 2009
Адрес: Ялта, Севастополь, Одесса
Сообщений: 52
|
создавать экземпляр класса в нем самом нельзя только в конструкторе и методах, вызываемых из конструктора
создавать экземпляр класса в нем самом можно только после того как создающий экземпляр полностью создан сам
__________________
понимание основ освобождает от необходимости запоминания тысяч фактов |
|
|||||
|
Цитата:
Еще как можно, главное обеспечить конец рекурсивного вызова. |
|
|||||
|
Регистрация: Feb 2009
Адрес: Ялта, Севастополь, Одесса
Сообщений: 52
|
можно и воду в решете носить
ну вызовите вы сколько надо рекурсивно конструктор, а дальше как вы вернете на верхний уровень ссылки на созданные объекты? ибо столкнетесь с чем то подобным: package { import flash.display.MovieClip; public class seq extends MovieClip{ public function seq(num:Number, ar:Array){ super(); if( num > 0 ) { var ns:seq = new seq(num - 1, ar); // надо передать конструктору массив инстансов уже содержащий инстанс созданый ЭТИМ ЖЕ конструктором ar.push(ns); // а в массив надо добавить объект созданый конструктором, которому передан массив с уже добавленым ЭТИМ ЖЕ объектом // и каждая из этих строк какбы должа выполниться перед другой } } } }
__________________
понимание основ освобождает от необходимости запоминания тысяч фактов |
|
|||||
|
Плохо понял, что Вы хотели сказать примером кода...но может быть так будет работать?
package { import flash.display.MovieClip; public class seq extends MovieClip{ public function seq(num:Number, ar:Array){ super(); if( num > 0 ) { ar.push(this); var ns:seq = new seq(num - 1, ar); // надо передать конструктору массив инстансов уже содержащий инстанс созданый ЭТИМ ЖЕ конструктором // ar.push(ns); // а в массив надо добавить объект созданый конструктором, которому передан массив с уже добавленым ЭТИМ ЖЕ объектом // и каждая из этих строк какбы должа выполниться перед другой } } } } . Вы же сами "почти" привели код, с помощью которого вернули ссылки на верхний уровень. |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:43. |
|
|
« Предыдущая тема | Следующая тема » |
|
|