Цитата:
Сообщение от 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;// возвращаем исходный цвет
}
}
Метод не универсален, но для моих целей подходит вполне. Хотя предложения по чистоте и оптимизации кода приветствуются.