Любой, кто здесь достаточно взрослый, чтобы помнить ActionScript 2.0 - вопрос наложения цветов - PullRequest
0 голосов
/ 05 ноября 2018

Я работаю над новым модом виджетов HUD для Skyrim, который, к сожалению, все еще использует AS 2.0 (икр ...). Одной из ключевых особенностей виджета является режим редактора в режиме реального времени, который позволяет пользователям перемещать / масштабировать / вращать / и т. Д. Каждый элемент виджета. Поскольку пользователь перебирает элементы, я в настоящее время использую метод setRGB, чтобы применить цвет выделения к выбранному элементу (или группе элементов). Проблема в том, что setRGB является деструктивным, поэтому при применении к значкам невозможно вернуть их в исходное состояние. Это не было бы проблемой, если бы значки были просто белыми, так как я мог бы просто использовать setRGB, чтобы установить их обратно в белый цвет. Однако некоторые значки имеют более одного цвета, и мне не удалось найти способ обновить их, чтобы удалить цвет выделения.

Я хотел использовать GlowFilter, чтобы применить подсветку как внешнее свечение, а не как наложение, но по какой-то причине GlowFilter никогда не появляется в игре.

Я также думал об использовании duplicateMovieClip для создания копии выбранного элемента поверх себя и применения к нему setRGB, а затем удаленияMovieClip, когда элемент циклически повторяется, но в AS2 это очень длительный процесс! Это также усложняется еще и тем, что некоторые из фрагментов ролика содержат временные шкалы, поэтому мне придется получить текущий кадр в оригинале и установить его в дубликате, а другие являются экземплярами других классов, которые необходимо инициализировать, прежде чем они будут отображаться правильно.

Если у кого-то есть какие-либо предложения относительно того, как лучше всего добиться съемного, неразрушающего цветового наложения или внешнего свечения, я был бы рад услышать от вас.

ОБНОВЛЕНИЕ: дальнейшие эксперименты, и я могу фактически подтвердить, что фильтры работают, однако я могу применить только тогда к моим элементам TextField. Я не могу заставить их применять их к моим видеоклипам, каждый из которых содержит вложенные клипы (некоторые, если они также содержат вложенные клипы и т. Д.). Я попытался использовать loop..if, чтобы перебрать вложенные клипы и применить фильтры к каждому экземпляру, но без радости. Так почему же setRGB работает с конечным родительским клипом, а использование свойства movieclip filters - нет? Я подумал, что, возможно, придется использовать cacheToBitmap, но в справочном руководстве сказано, что это делается автоматически при применении фильтра.

...