Показать сообщение отдельно
Старый 20.07.2018, 12:38
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 7  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 468
СлаваRa, ко мне можно и нужно на "ты"

Я же не специально... У меня первый проект, я уже год делаю его для себя, в своё удовольствие и в меру собственных способностей. Расширение кругозора происходит стремительно, поэтому уже раза 2 почти полностью переписывал. И скорее всего, это не последний раз.

Если конкретно по обсуждаемому вопросу, но ноги растут вот отсюда. После того как я распихал многочисленные свойства класса Character по нескольким подключаемым классам, возникла проблема с обращениями к ним извне. Они у меня происходят через передачу строкового ID нужного свойства. Раньше я спокойно писал в любом месте, где есть ссылка на экземпляр персонажа: character[PropID], а теперь не могу, так как теперь свойство propID может быть как в самом классе Character, так и в Skills, Personality, Statuses и т.п.

На сегодня лучшее, что по этому поводу придумалось - это сделать единый метод, который будет проверять, где "живёт" запрашиваемое свойство, и выдавать его значение. Заодно применять к нему модификаторы, "подрезать" его при необходимости по установленному максимуму и т.п. Вот такой код:

Код AS3:
public function getProp (propID: String) : * // Возвращает значение свойства по ID
		{
			if (this.hasOwnProperty(propID)) return this[propID];
 
			var componentID: String = this.redirectByPropID(propID);
			return this[componentID][propID];
		}
 
protected function redirectByPropID(propID: String) : String  // Возвращает ID компонента, хранящего свойство
		{
			if (_personality.hasOwnProperty(propID)) return ChIDs.COMPONENT_PERSONALITY;
			if (_parameters.hasOwnProperty(propID)) return ChIDs.COMPONENT_PARAMETERS;
			if (_skills.hasOwnProperty(propID)) return ChIDs.COMPONENT_SKILLS;
 
			throw (CLASS_DEBUG_NAME + "-> redirectByPropID: неизвестный ID параметра. Используйте константы класса ID персонажей!");		
		}
Если есть что покритиковать и предложить, буду признателен.
__________________
Не сломано - не чини!