создание скинов для нескольких компонентов пользовательского интерфейса - PullRequest
0 голосов
/ 02 февраля 2011

Допустим, в вашем приложении имеется большое количество (N) кнопок зажигания.Скажем также, что все ваши кнопки имеют очень похожие скины (размер, различные эффекты и т. Д.) - единственное отличие заключается в конкретном png, который они используют в качестве BitmapImage.В итоге у вас N файлов скинов, все отличаются на 1 строку?Или есть более разумный способ сделать это, не добавляя много кода при создании кнопок в MXML (фактически, в идеале, ни одной).

1 Ответ

1 голос
/ 02 февраля 2011

Создание пользовательской кнопки со значком 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;
        }
    }
...