по сути то же самое, что и во втором посте

Код 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;
}
}
А какая гибкость )))