Показать сообщение отдельно
Старый 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.