Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 18.03.2010, 20:40
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 11  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Сообщение от Котяра Посмотреть сообщение
обычно реализация метода clone в классе как раз и создаёт объект типа Класс
Клон это несколько другое.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 18.03.2010, 23:24
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 12  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Вопрос был: "возможно ли в классе создать экземпляр класса". я сказал - да, более того: так практически всегда поступают если нужно определить метод клонирования.
__________________
Отряд Котовскага

Старый 18.03.2010, 23:40
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 13  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Сообщение от Котяра Посмотреть сообщение
Вопрос был: "возможно ли в классе создать экземпляр класса". я сказал - да, более того: так практически всегда поступают если нужно определить метод клонирования.
А где в вопросе было упомянуто клонирование? Клонирование, это когда мы получаем новый экземпляр с тем же свойствами, что и у оригинала.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 19.03.2010, 11:06
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 14  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
блин.. Клонирование я упомянул, как пример создания экземпляра класса внутри класса. Т.е. был вопрос: "так можно?". Я ответил : "Да - причём, так поступают очень часто, например, при клонировании."
по сути самого топика: тоже можно сделать через клонирование.
Код AS3:
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. кроме того есть время жизни/интервал размножения и случайный вектор направления.
на поле появляется еда которую едят рыбы ( наверное больше под абстракцию подходит микроорганизмы, размножающиеся делением).
время жизни напрямую зависит от времени и количества съеденной еды - голодные умирают. живые размножаются)
количество съеденой еды зависит от скорости и габаритов. но можно ввести обратную связь - для большого тела надо больше еды.. для более быстрых тоже.. коэффициенты всякие тоже можно сделать наследуемыми с мутациями..
Академический интерес: варируя разные генетические коэффициенты и параметры окружающей среды посмотреть какая популяция получится.)))

Код AS3:
package
{
public class Ameba implements  IClonable {
...
public function clone(): Ameba 
{
var cloned:Ameba  = new Ameba()
cloned.speed = this.speed+Math.random()*deltaSpeed-deltaSpeed/2;
cloned.width= this.width+Math.random()*deltaWidth-deltaWidth/2;
//...итп
 
return cloned;
}
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 22.03.2010 в 10:03.
Старый 29.03.2010, 18:37
martende вне форума Посмотреть профиль Отправить личное сообщение для martende Найти все сообщения от martende
  № 15  
Ответить с цитированием
martende

Регистрация: Mar 2010
Сообщений: 6
самый типичный пример ето Event::clone , так что вопрос, отнюдь, не чисто теоретический.

Старый 30.03.2010, 22:12
Elser вне форума Посмотреть профиль Отправить личное сообщение для Elser Найти все сообщения от Elser
  № 16  
Ответить с цитированием
Elser
 
Аватар для Elser

Регистрация: Feb 2009
Адрес: Ялта, Севастополь, Одесса
Сообщений: 52
создавать экземпляр класса в нем самом нельзя только в конструкторе и методах, вызываемых из конструктора
создавать экземпляр класса в нем самом можно только после того как создающий экземпляр полностью создан сам
__________________
понимание основ освобождает от необходимости запоминания тысяч фактов

Старый 31.03.2010, 09:56
zuxul вне форума Посмотреть профиль Отправить личное сообщение для zuxul Найти все сообщения от zuxul
  № 17  
Ответить с цитированием
zuxul

Регистрация: Dec 2009
Адрес: 59°13′N, 39°54′E
Сообщений: 445
Записей в блоге: 1
Цитата:
Сообщение от Elser Посмотреть сообщение
создавать экземпляр класса в нем самом нельзя только в конструкторе и методах, вызываемых из конструктора
создавать экземпляр класса в нем самом можно только после того как создающий экземпляр полностью создан сам
Неправда...
Еще как можно, главное обеспечить конец рекурсивного вызова.

Старый 31.03.2010, 14:32
Elser вне форума Посмотреть профиль Отправить личное сообщение для Elser Найти все сообщения от Elser
  № 18  
Ответить с цитированием
Elser
 
Аватар для Elser

Регистрация: Feb 2009
Адрес: Ялта, Севастополь, Одесса
Сообщений: 52
можно и воду в решете носить
ну вызовите вы сколько надо рекурсивно конструктор, а дальше
как вы вернете на верхний уровень ссылки на созданные объекты?
ибо столкнетесь с чем то подобным:
Код AS3:
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);
				// а в массив надо добавить объект созданый конструктором, которому передан массив с уже добавленым ЭТИМ ЖЕ объектом 
				// и каждая из этих строк какбы должа выполниться перед другой
			} 
		}
	}
}
а в свете того что конструктор не может возвращать значение это сделать либо не реально либо бессмыслено
__________________
понимание основ освобождает от необходимости запоминания тысяч фактов

Старый 31.03.2010, 17:44
zuxul вне форума Посмотреть профиль Отправить личное сообщение для zuxul Найти все сообщения от zuxul
  № 19  
Ответить с цитированием
zuxul

Регистрация: Dec 2009
Адрес: 59°13′N, 39°54′E
Сообщений: 445
Записей в блоге: 1
Плохо понял, что Вы хотели сказать примером кода...но может быть так будет работать?
Код AS3:
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, время: 22:44.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 22:44.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.