Показать сообщение отдельно
Старый 05.04.2010, 11:27
SunShadow вне форума Посмотреть профиль Отправить личное сообщение для SunShadow Найти все сообщения от SunShadow
  № 6  
Ответить с цитированием
SunShadow
 
Аватар для SunShadow

Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
Я делал похожую задачу, реализовал через конструктор в базовом классе. Все объекты были наследники от базового класса, соответственно перекрывались только необходимые методы. А в базовом классе был создан метод construct
Код AS3:
package code 
{
	import flash.display.Sprite;
	import code.event.GameEvent;
	import flash.events.Event;
	import code.enemy.*;
	import code.friend.*;
 
	/**
	 * Игровой объект
	 * @author KingPeas
	 */
	public class GameObject extends Sprite
	{
 
		public function GameObject() 
		{
			setCenterCoordinate();
			addEventListener(Event.ADDED_TO_STAGE, hnAddedToStage);
			cacheAsBitmap = true;
			mouseEnabled = false;
			this.initValue();
		}
		/**
		 * Создание нового игрового объекта
		 * @param	property	свойства объекта
		 * @param	currentPos	текущее смещение карты
		 * @return	возвращается игровой объект
		 */
		static public function construct(property:XML, currentPos:int):GameObject {
			var go:GameObject;
 
			switch(uint(property.@t)) {
				case 1:
					go = new IronBlock();
					break;
				case 2:
					go = new WoodBlock();
					break;
				case 3:
					go = new EnemyShip();
					break;
				case 6:
					go = new Bullet();
					break;
				case 7:
					go = new Sputnik();
					break;
				case 8:
					go = new Score();
					break;
				case 9:
					go = new Mine();
					break;
				case 10:
					go = new Life();
					break;
				default:
					go = new GameObject();
			}
			go.initProperty(property);
			go.x -= currentPos;
			return go;
		}
...
}
Вот как то так.
И соответственно чтобы получить объект мне нужно было только знать его тип определенный в xml. Передавая указание какой тип объекта надо создать я получал на выходе готовый объект столько раз сколько это было необходимо.
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ


Последний раз редактировалось SunShadow; 05.04.2010 в 11:30.