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

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

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

блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
Записей в блоге: 1
Отправить сообщение для incvizitor с помощью Skype™
Цитата:
Только так не скомпилируется
Под рукой нету примера, но точно помню что такое у меня компилировалось =)

Добавлено через 2 минуты
Цитата:
Только все равно смысла в этом не много, т.как если нужно переопределить этот метод, то толку от всех этих ухищрений будет не много.
Можно переопределять только метод _initProps, а метод clone оставить в покое.
__________________
ranga

Старый 01.06.2010, 13:54
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 12  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
baseObjectPtr:curClass= new curClass();
Вот эта строчка - это что? Метка цикла? Объявление переменной (без var)? curClass нельзя использовать в качестве типа, тип должен быть известен на момент компиляции.

А зачем 2 функции, и одну из двух оверрайдить, если можно только одну, и ее же оверрайдить?
__________________
Hell is the possibility of sanity

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

Регистрация: Jul 2008
Адрес: Украина, Киев
Сообщений: 253
Да уж, варианты интересные, особенно порадовал с использованием ByteArray ))
Пожалуй, оставлю, как есть )

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

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Как вариант можно сделать метод applyAllParametrs, чтобы метод clone выглядел вот так:
Код AS3:
public function clone():BaseObject{
var obj:BaseObject=new BaseObject();
applyAllParameters(obj);
return obj;
}
Это решит проблему.

Старый 01.06.2010, 15:12
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 15  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Цитата:
applyAllParameters(obj);
по сути то же самое, что и во втором посте
Код AS3:
protected function _copyFrom_BaseObject( source:BaseObject ):void
только наоборот, как я понимаю

Если нужна компактность, то вот как такой вариант:
Код AS3:
public class BaseObject
{
...............
 
	public function clone():BaseObject
	{
		var _clone:BaseObject = new BaseObject();
		    _clone.copyFrom( this );
 
		return _clone;
	}
 
	public function copyFrom( source:BaseObject ):void
	{
		this.id = source.id;
		this.name = source.name;
		this.type = source.type;
	}
 
...............
 
}
Код AS3:
public class WorldObject extends BaseObject
{
	private var currAnim:String;
 
 
	override public function clone():BaseObject
	{
		var _clone:WorldObject = new WorldObject();
		    _clone.copyFrom( this );
 
		return _clone;
	}
 
	override public function copyFrom( source:BaseObject ):void
	{
		super.copyFrom( source );
 
		if( !(source is WorldObject) )
			return;
 
		this.currAnim = (source as WorldObject).currAnim;
	}
}
В принципе вот эту проверку можно опустить:
Код AS3:
		if( !(source is WorldObject) )
			return;
Добавлено через 14 минут
Ну вот вообще компакт )))
Код AS3:
public class BaseObject
{
...............
 
	public function clone():BaseObject
	{
		return copyTo( new BaseObject() );
	}
 
	public function copyTo( dest:BaseObject ):BaseObject
	{
		dest.id = this.id;
		dest.name = this.name;
		dest.type = this.type;
 
		return dest;
	}
 
...............
 
}
Код AS3:
public class WorldObject extends BaseObject
{
	private var currAnim:String;
 
 
	override public function clone():BaseObject
	{
		return copyTo( new WorldObject() );
	}
 
	override public function copyTo( dest:BaseObject ):BaseObject
	{
		super.copyTo( dest );
 
		if( dest is WorldObject )
		        (dest as WorldObject).currAnim = this.currAnim;
 
		return dest;
	}
}
А какая гибкость )))


Последний раз редактировалось i.o.; 01.06.2010 в 15:32.
Старый 01.06.2010, 16:06
incvizitor вне форума Посмотреть профиль Отправить личное сообщение для incvizitor Найти все сообщения от incvizitor
  № 16  
Ответить с цитированием
incvizitor
 
Аватар для incvizitor

блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
Записей в блоге: 1
Отправить сообщение для incvizitor с помощью Skype™
wvxvw, ну да, запятую пропустил =)
curClass, По любому известен, так как это наш данный класс, и если наш класс компилируется, то curClass будет известен.

Ладно, мне с Вами спорить еще рано
__________________
ranga

Создать новую тему Ответ Часовой пояс GMT +4, время: 16:32.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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