Показать сообщение отдельно
Старый 06.02.2015, 18:31
a7s1h1 вне форума Посмотреть профиль Отправить личное сообщение для a7s1h1 Найти все сообщения от a7s1h1
  № 4  
Ответить с цитированием
a7s1h1

Регистрация: Oct 2013
Сообщений: 126
Цитата:
Сообщение от faraday Посмотреть сообщение
Можете посомтреть в сторону tweeLite. там это все легко делать через colorTransform . Ну а вообще не знаю чем вас смущает количество статусов. правильное решение - использовать автомат состояний. Иначе быстро запутаетесь . Ну и если типов юнитов много, надо подумать о правильном наследовании. Но это так, оффтопик
Ради такого пустяка не хочется использовать твинер. А статусы у меня и так есть: от них зависит и поведение, и анимация. И количество статусов меня совершенно не смущает, чего не скажешь про количество анимаций: так как для каждого статуса своя анимация, то рисования отдельной анимации для каждого статуса, но в отравленном состоянии как раз увеличило бы количество анимаций вдвое. Зачем такие муки, если можно перекрасить программно, правильно?

Цитата:
Сообщение от callme Посмотреть сообщение
Используй greenMultiplier или greenOffset у ColorTransform.
Спасибо большое, то, что надо! Вот, что получилось (может, кому пригодится):
Свойство юнита:
Код AS3:
private var _defaultColor:ColorTransform; // цвет по умолчанию
Теперь, чтобы озеленить юнита, пишу poisonColor(); чтобы снять озеленение - poisonColor(false).
А вот сам метод:
Код AS3:
/**
* 
* Установка и отмена цвета отравления
* 
* @param	green озеленять или нет, по умолчанию - да
*/
private function poisonColor(green:Boolean = true):void {
	if (green) {
		var newColorTransform:ColorTransform = transform.colorTransform; // отталкиваемся от цвета по умолчанию
		newColorTransform.color = 0x00FF00; // зелёный
		newColorTransform.greenMultiplier = 1; // зелёность зелёного цвета не меняется
		newColorTransform.greenOffset = .5; // прозрачность зелёного
		transform.colorTransform = newColorTransform; // применяем новый цвет
	} else {
		transform.colorTransform = _defaultColor;// возвращаем исходный цвет
	}
}
Метод не универсален, но для моих целей подходит вполне. Хотя предложения по чистоте и оптимизации кода приветствуются.