Apache flex 蒙皮多个UI组件

Apache flex 蒙皮多个UI组件,apache-flex,flex4,mxml,skinning,Apache Flex,Flex4,Mxml,Skinning,假设你的应用程序中有大量的火花按钮。我们还可以说,您的按钮都具有非常相似的外观(大小、各种效果等)——唯一的区别是它们用作位图图像的特定png。 您是否最终得到N个皮肤文件,所有文件都相差1行?或者,当您在MXML中创建按钮时,是否有一种更智能的方法可以做到这一点,同时不添加大量代码(事实上,理想情况下,没有)。创建带有图标SkinPart(键入为位图图像)的自定义按钮将允许您对所有按钮使用相同的外观: <YourCustomButton icon="@Embed('yourIconFil

假设你的应用程序中有大量的火花按钮。我们还可以说,您的按钮都具有非常相似的外观(大小、各种效果等)——唯一的区别是它们用作位图图像的特定png。
您是否最终得到N个皮肤文件,所有文件都相差1行?或者,当您在MXML中创建按钮时,是否有一种更智能的方法可以做到这一点,同时不添加大量代码(事实上,理想情况下,没有)。创建带有图标SkinPart(键入为位图图像)的自定义按钮将允许您对所有按钮使用相同的外观:

<YourCustomButton icon="@Embed('yourIconFile.png') />

弗洛里安,谢谢你的建议。我想你已经了解了一些东西,但我不太清楚你是如何设置的——我一直在尝试,但对SkinPart的使用经验很少。你能发一些代码吗?
public class CustomButton extends Button
    {
        [SkinPart(required="false")]
        public var iconContainer:BitmapImage;

        private var _icon:Object;

        public function CustomButton()
        {
            super();
        }

        override protected function partAdded(partName:String, instance:Object):void
        {
            super.partAdded(partName, instance);

            if (instance == iconContainer && _icon)
                iconContainer.source = _icon;
        }

        public function get icon():Object
        {
            return _icon;
        }
        public function set icon(value:Object):void
        {
            if (iconContainer)
                iconContainer.source = value;

            _icon = value;
        }
    }