为多个UI组件设置外观

时间:2011-02-02 04:22:00

标签: flex flex4 mxml skinning

假设您的应用中有大量(N)个火花按钮。我们还要说你的按钮都有非常相似的皮肤(大小,各种效果等) - 唯一的区别是它们用作BitmapImage的特定png。 你最终得到N皮肤文件,所有不同的1行?或者,当你在MXML中创建按钮时(实际上,理想情况下,没有),在没有添加大量代码的情况下,有更智能的方法来执行此操作。

1 个答案:

答案 0 :(得分:1)

创建一个带有图标的自定义按钮SkinPart键入为BitmapImage将允许您对所有按钮使用相同的外观:

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

<强> CustomButton.as

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;
        }
    }