Слава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 персонажей!");
}
Если есть что покритиковать и предложить, буду признателен.