Показать сообщение отдельно
Старый 10.04.2012, 00:43
PlutDem вне форума Посмотреть профиль Отправить личное сообщение для PlutDem Найти все сообщения от PlutDem
  № 3  
Ответить с цитированием
PlutDem
 
Аватар для PlutDem

Регистрация: Feb 2012
Сообщений: 212
Цитата:
Сообщение от Wolsh Посмотреть сообщение
По Вашему коду мой вопрос скорее касается самой шапки. Как с нее "снять" зачарование, убрать один из декораторов.
Я могу предложить только быдло-способ, загасить эффект ненужного декоратора другим декоратором либо создать новый объект с текущими декораторами кроме ненужного.
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Код AS3:
override public function get strength():int {
	return item.strength + this._strength;
}
?
Посмотрите внимательнее на декоратор. У каждого из них есть свойство для хранения значения прибавляемого бонуса. Т. е. если применить к вещи 2 декоратора силы +5 и +10, то в памяти будут хранится эти два свойства со значениями 5 и 10. Если увлечься такими апгрейдами, то в конце концов объект вещи разжиреет.
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Если хотите камней, то их есть у меня.
Шапка hat это экземпляр Item, так?
У Item есть свойства strength, stamina и т.д.?
Вопрос – чем ваше декорирование лучше прямой установки?
Код AS3:
var hat:IItem = new Item("Magic hat");
hat.stamina += 50;
У Item нет свойств, только геттеры. Свойство для хранения значения бонуса добавляет декоратор, в этом то вся и фишка. Если правильно понимаю, то во эта конструкция будет существовать в единственном экземпляре для всех объектов класса.
Код AS3:
public function get armor():int {
			return 12;
		}
P.S. Вопрос про измерение памяти все еще в силе, если эта белиберда сэкономит 5% памяти, то ну его нафиг.


Последний раз редактировалось PlutDem; 10.04.2012 в 00:49.