2012-11-06 35 views
0

我想要在Flex中的皮膚按鈕,但是當我剝皮一個按鈕後,我在它中鏈接的圖標消失了。我知道我可以將圖標添加到皮膚中,但這意味着我必須創建很多不同的皮膚。Flex皮膚按鈕,保持圖標

任何簡單的方法來解決這個問題?

MXML文件:

<?xml version="1.0" encoding="utf-8"?> 
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" 
     xmlns:ns1="*" 
     xmlns:packageservice="services.packageservice.*" 
     title="My Dish" 
     fontSize.Beef="10" textAlign.Beef="center"> 
    <fx:Script> 
     <![CDATA[ 
      import com.adobe.serializers.utility.TypeUtility; 

      import mx.events.FlexEvent; 




      protected function list_creationCompleteHandler(event:FlexEvent):void 
      { 
       my_get_beef_dishResult.token = packageService.my_get_beef_dish(); 
      } 


      protected function list2_creationCompleteHandler(event:FlexEvent):void 
      { 
       my_get_pork_dishResult.token = packageService.my_get_pork_dish(); 
      } 


      protected function list3_creationCompleteHandler(event:FlexEvent):void 
      { 
       my_get_chicken_dishResult.token = packageService.my_get_chicken_dish(); 
      } 


      protected function list4_creationCompleteHandler(event:FlexEvent):void 
      { 
       my_get_fish_dishResult.token = packageService.my_get_fish_dish(); 
      } 


      protected function list5_creationCompleteHandler(event:FlexEvent):void 
      { 
       my_get_vegetables_dishResult.token = packageService.my_get_vegetables_dish(); 
      } 

     ]]> 
    </fx:Script> 
    <s:states> 
     <s:State name="Beef"/> 
     <s:State name="Pork"/> 
     <s:State name="Chicken"/> 
     <s:State name="Fish"/> 
     <s:State name="Vegetables"/> 
     <s:State name="Other"/> 
    </s:states> 
    <s:navigationContent> 
     <s:Button label="Back" click="navigator.popView();"/> 
    </s:navigationContent> 
    <fx:Declarations> 
     <s:CallResponder id="my_get_beef_dishResult"/> 
     <packageservice:PackageService id="packageService"/> 
     <s:CallResponder id="my_get_pork_dishResult"/> 
     <s:CallResponder id="my_get_chicken_dishResult"/> 
     <s:CallResponder id="my_get_fish_dishResult"/> 
     <s:CallResponder id="my_get_vegetables_dishResult"/> 

     <!-- Place non-visual elements (e.g., services, value objects) here --> 
    </fx:Declarations> 
    <s:VGroup x="0" y="0" width="245" height="364" contentBackgroundColor="#E6E6E6">              
     <s:List id="MyDishOther" includeIn="Other" width="245" height="364" contentBackgroundColor="#E6E6E6"></s:List> 
     <s:List id="list" includeIn="Beef" width="245" height="365" 
       creationComplete="list_creationCompleteHandler(event)" labelField="name"> 
      <s:AsyncListView list="{my_get_beef_dishResult.lastResult}"/> 
     </s:List> 
     <s:List id="list2" includeIn="Pork" width="245" height="365" 
       creationComplete="list2_creationCompleteHandler(event)" labelField="name"> 
      <s:AsyncListView list="{my_get_pork_dishResult.lastResult}"/> 
     </s:List> 
     <s:List id="list3" includeIn="Chicken" width="245" height="365" 
       creationComplete="list3_creationCompleteHandler(event)" labelField="name"> 
      <s:AsyncListView list="{my_get_chicken_dishResult.lastResult}"/> 
     </s:List> 
     <s:List id="list4" includeIn="Fish" width="245" height="365" 
       creationComplete="list4_creationCompleteHandler(event)" labelField="name"> 
      <s:AsyncListView list="{my_get_fish_dishResult.lastResult}"/> 
     </s:List> 
     <s:List id="list5" includeIn="Vegetables" width="245" height="365" 
       creationComplete="list5_creationCompleteHandler(event)" labelField="name"> 
      <s:AsyncListView list="{my_get_vegetables_dishResult.lastResult}"/> 
     </s:List> 
    </s:VGroup> 

... 

     <s:Button includeIn="Beef" width="70" icon="assets/beef.png" skinClass="components.Stab"/> 
     <s:Button includeIn="Beef" width="60" click="currentState='Chicken'" icon="assets/chicken.png"/> 
     <s:Button includeIn="Beef" width="60" click="currentState='Fish'" icon="assets/fish(1).png"/> 
     <s:Button includeIn="Beef" width="60" click="currentState='Pork'" icon="assets/porktest(1).png"/> 
     <s:Button includeIn="Beef" width="60" icon="assets/t_vegetables.png" click="currentState='Vegetables'"/> 

..... 

    </s:VGroup> 
</s:View> 

的skinClass:

<?xml version="1.0" encoding="utf-8"?> 

<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" alpha.disabled=".5"> 

    <!-- states --> 

    <s:states> 

     <s:State name="up" /> 

     <s:State name="over" /> 

     <s:State name="down" /> 

     <s:State name="disabled" /> 

    </s:states> 

    <!-- layer 2: fill --> 
    <s:Rect left="1" right="1" top="1" bottom="1" radiusX="2" radiusY="2"> 
     <s:fill> 
      <s:LinearGradient rotation="90"> 
       <s:GradientEntry color="0xFFFFFF" 
           color.over="0xBBBDBD" 
           color.down="0xAAAAAA" 
           alpha="0.85" /> 
       <s:GradientEntry color="0xD8D8D8" 
           color.over="0x9FA0A1" 
           color.down="0x929496" 
           alpha="0.85" /> 
      </s:LinearGradient> 
     </s:fill> 
    </s:Rect> 

    <!-- layer 2: border --> 
    <s:Rect left="0" right="0" top="0" bottom="0" width="60" height="45" radiusX="2" radiusY="2"> 
      <s:stroke> 

      <s:LinearGradientStroke rotation="90" weight="1"> 
       <s:GradientEntry color="0x000000" 
           alpha="0.5625" 
           alpha.down="0.6375" /> 
       <s:GradientEntry color="0x000000" 
           alpha="0.75" 
           alpha.down="0.85" /> 
      </s:LinearGradientStroke> 
      </s:stroke> 
    </s:Rect> 




</s:Skin> 
+1

請給我們一些代碼。你也剝皮mx:或s:按鈕? –

+0

火花,手機應用程序 –

+0

您需要按鈕底座的圖標外觀部分。讓Flash Builder自動生成皮膚。 –

回答

0

正如我猜測的問題是,你的皮膚是不是從SparkButtonSkin繼承。 其中實現了圖標功能,默認按鈕外觀繼承了SparkButtonSkin。

+0

我該如何解決這個問題? –

+0

從SparkButtonSkin繼承你的皮膚 – yrunts