2011-02-02 40 views
0

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

回答

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

弗洛里安,谢谢为您的建议。我认为你正在尝试一些东西,但我不清楚你是如何设置它的 - 我一直在尝试,但对SkinPart的体验很少。任何机会,你可以发布一些代码? – 2011-02-02 15:57:02