2011-02-02 3 views
0

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

ответ

1

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

Флориан, спасибо для вашего совета. Я думаю, вы на что-то, но я не совсем понимаю, как вы все это установили - я пытался, но у меня очень мало опыта с SkinPart. Есть ли вероятность, что вы можете отправить какой-то код? –

+0

уверен! см. мой отредактированный ответ –

+0

Флориан, спасибо вам большое - это прекрасно! –