Вы также можете определить ButtonImageSkin для стандартного компонента spark.components.Button, например, в пакете imageskins:
<s:SparkButtonSkin xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:fb="http://ns.adobe.com/flashbuilder/2009">
<fx:Metadata>
[HostComponent("spark.components.Button")]
</fx:Metadata>
<s:states>
<s:State name="up" />
<s:State name="over" />
<s:State name="down" />
<s:State name="disabled" />
</s:states>
<s:BitmapImage source="{getStyle('backgroundImage')}"/>
</s:SparkButtonSkin>
Просто определите стиль на самом классе скина и свяжите источникизображение к нему.Теперь вы можете управлять фактическими изображениями, используя псевдоселекторы CSS:
@namespace imageskins "imageskins.*";
s|Button {
skinClass: ClassReference("imageskins.ButtonImageSkin");
}
imageskins|ButtonImageSkin:up {
backgroundImage: Embed(source="assets/images/button-up.png");
}
imageskins|ButtonImageSkin:down {
backgroundImage: Embed(source="assets/images/button-down.png");
}
imageskins|ButtonImageSkin:over {
backgroundImage: Embed(source="assets/images/button-over.png");
}
imageskins|ButtonImageSkin:disabled {
backgroundImage: Embed(source="assets/images/button-disabled.png");
}
Таким образом, вы можете получить результат с более гибкими правилами на основе CSS.Я закончил тем, что создал набор скинов Spark на основе изображений для различных компонентов Flex: FXG намного мощнее, но иногда работа с изображениями scale9 - это просто самый быстрый способ получить желаемый результат.
Примечание: есливы помещаете свои классы тем оформления и свой файл CSS (с любым именем) в проект библиотеки Flex и компилируете свой клиентский проект с опцией -theme, Flex автоматически применяет CSS .. полезный при создании набора тем оформления вместе с CSSкоторые связывают их с их компонентами хоста.