![]() |
|
||||||||||
|
|||||
|
Регистрация: Oct 2013
Сообщений: 126
|
Здравствуйте!
Хочу сделать так, что при отравлении юнит становится зеленоватым. Когда отравление проходит - опять становится нормальным. Вот варианты, которые рассмотрел или попробовал: 1. Рисовать анимацию отдельно для отравленного состояния. Почему не стал использовать: плохой вариант, увеличивает вдвое количество статусов у юнита в коде и количество анимаций в библиотеке 2. Менять цвет юнита. Пробовал менять цвет так: ct:ColorTransform = new ColorTransform; ct.color = 0x00FF00; transform.colorTransform = ct; Почему не получилось: цвета меняются у всего мувика, т.е. остаётся один силуэт заданного цвета. Установка белого цвета просто меняет цвет на белый, а не обнуляет раскрашивае (впрочем, это было ожидаемо) 3. Наложить маску. При создании юнита (со свойством private var poisonMask:Shape) добавил // индикация отравления _poisonMask = new Shape(); _poisonMask.graphics.beginFill(0x00FF00, .5); _poisonMask.graphics.drawRect(0, 0, width, height); _poisonMask.graphics.endFill; _poisonMask.cacheAsBitmap = true; mask = null // убираем маску Почему не получилось: При отравлении юнит вообще становится невидимым, а после "выздоровления" снова появляется. Чую, что вообще не правильно понимаю, что такое маска... Подскажите, пожалуйста, как можно "слегка зеленить" юнита (с несколькими анимациями), и, соответственно, "снимать" эту зелень? Хотя бы намекните, при помощи какого инструмента это можно делать. |
|
|||||
|
Регистрация: Dec 2014
Сообщений: 312
|
Используй greenMultiplier или greenOffset у ColorTransform.
|
|
|||||
|
Регистрация: Apr 2009
Сообщений: 409
|
Можете посомтреть в сторону tweeLite. там это все легко делать через colorTransform . Ну а вообще не знаю чем вас смущает количество статусов. правильное решение - использовать автомат состояний. Иначе быстро запутаетесь . Ну и если типов юнитов много, надо подумать о правильном наследовании. Но это так, оффтопик
|
|
|||||
|
Регистрация: Oct 2013
Сообщений: 126
|
Цитата:
Спасибо большое, то, что надо! Вот, что получилось (может, кому пригодится): Свойство юнита: Теперь, чтобы озеленить юнита, пишу poisonColor(); чтобы снять озеленение - poisonColor(false). А вот сам метод: /** * * Установка и отмена цвета отравления * * @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;// возвращаем исходный цвет } } |
|
|||||
|
А я использовал силиновский ColorAdjust. Соответственно для выздоровления - фильтр убираем.
http://silin.su/#AS3/filters/color
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
|
Регистрация: Oct 2013
Сообщений: 126
|
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 21:26. |
|
|
« Предыдущая тема | Следующая тема » |
|
|