Создание темы оформления кнопки Flex со значками BitmapImage

Я следил за хорошим руководством по созданию скина кнопки, который позволяет добавлять разные изображения:

http://brianackermann.wordpress.com/2010/05/06/flex-4-reusable-icon-button-skins/#expandSource

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

2 зеленых изображения должны совпадать, как и белые. Кнопки — это синие квадраты:

http://i.stack.imgur.com/V8YZs.jpg

Фон XX должен показывать, где изображения должны быть непрозрачными.

(Отредактируйте, отделив эту часть от сообщения, чтобы избежать путаницы после того, как она будет решена в комментариях): Произошла ошибка, поскольку метка в моем скине не имела id="LabelDisplay". Кнопке в загруженном учебном проекте это не нужно. Как только я добавил id="LabelDisplay", эта часть была решена.


person Mr.Oz    schedule 20.04.2012    source источник
comment
1./ Хотя я вижу, что вы пытаетесь объяснить свою проблему как можно лучше, она все еще слишком расплывчата, чтобы иметь возможность делать какие-либо предложения (во всяком случае, для меня). 2./ Начиная с версии Flex 4.5, класс Button имеет встроенный стиль icon, поэтому это руководство устарело.   -  person RIAstar    schedule 20.04.2012
comment
Извините, я не мог быть более конкретным, но я понятия не имею, что может быть причиной этого. Маскировка? Смешивание? Это передается по наследству? Различия версий Flex? Опции? И т.д! Я обнаружил, что обработка значков Flex минимальна, например, вы не можете контролировать размер значка. В этом руководстве показано, как создавать и передавать собственные аргументы, например, вы можете добавить фильтр свечения к изображению в скине и создать аргументы для цвета и силы свечения, чтобы управлять ими из вашего приложения:   -  person Mr.Oz    schedule 20.04.2012
comment
Если вам нужен такой уровень контроля, я предпочитаю создавать собственные скины, а не общие (конечно, это только мой подход). Что касается вашего реального вопроса, вот несколько предположений: 1./ относительно labelDisplay: это не обязательная часть скина во Flex 4.5 и выше, но может быть, что она требовалась в более ранних версиях (которых у меня больше нет). проверять); это объяснило бы любые различия там. 2./ по поводу цветов: вроде как какой-то BlendMode применен, но, возможно, скриншот сказал бы больше, чем ваше описание.   -  person RIAstar    schedule 20.04.2012
comment
Спасибо, это объясняет LabelDisplay. Я попытался настроить BlendMode на изображениях и заполнить Rect в скине кнопки. Я попытался добавить скриншоты, но получил следующее сообщение: «Извините, но в целях предотвращения спама новым пользователям не разрешается публиковать изображения...   -  person Mr.Oz    schedule 20.04.2012
comment
Решенная часть проблемы, цвет синей кнопки был в глобальном хромированном цвете css. Я думаю, что это было из темы Spark.   -  person Mr.Oz    schedule 21.04.2012
comment
Я немного поднял вашу репутацию, но не знаю, будет ли этого достаточно для загрузки изображений. В любом случае вы всегда можете загрузить изображение на такой сервис, как imgur, и просто вставить ссылку.   -  person RIAstar    schedule 21.04.2012
comment
Спасибо, РИАстар, отредактировал и добавил ссылки. Раньше не видел imgur, отличный и простой способ обмена изображениями. Некоторые представители тоже идут к вам!   -  person Mr.Oz    schedule 22.04.2012
comment
Сейчас я могу придумать только 2 разумных объяснения этому: либо какой-то графический элемент лежит поверх значка (с некоторой прозрачностью или режимом наложения), либо сама кнопка прозрачна и становится темнее из-за находящегося за ней DropShadowFilter. В любом случае, попробуйте удалить некоторые графические элементы со своей кожи и посмотрите, что произойдет.   -  person RIAstar    schedule 22.04.2012
comment
Все элементы обязательны, но я очистил их содержимое, и это не помогло. Удалил скрипты скина и вскоре обнаружил, что изменение useChromeColor на false в initializationComplete() скина и установка цветов заливки кнопки в самом скине сделали изображение правильным (highlightStroke дал кнопке белую рамку, поэтому я удалил это). Кажется, что initializationComplete переопределяет initializationComplete в классе UIComponent, а useChromeColor находится в классе SparkSkin. Мой AS3 минимален, но кажется, что смешивание/альфа было унаследовано от одного из этих классов. Еще раз спасибо, РИАстар.   -  person Mr.Oz    schedule 23.04.2012


Ответы (1)


В скине IconButton был массив постоянных исключений. Простое добавление идентификатора BitmapImage в этот массив привело к тому, что BitmapImage был исключен из раскрашивания классом SparkSkin:

static private const exclusions:Array = ["labelDisplay","icon"];

Теперь отображается корректно.

person Mr.Oz    schedule 23.04.2012
comment
Спасибо. Для тех, у кого возникли проблемы с этим, я разместил здесь дополнительные инструкции о том, как это сделать: stackoverflow.com/a/25772205/2573896< /а> - person aruanoc; 10.09.2014