2013-05-07 85 views
0

我创建了一个名为HTMLBtnBlue.mxml的按钮皮肤,我创建了一个带有HTMLBtnBlue.mxml副本的另一个皮肤,并将其命名为HTMLBtnYellow并将颜色更改为0xF8C313。对于HTMLBtn.mxml 代码如下Flex中的按钮皮肤问题

<?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" 
xmlns:mx="library://ns.adobe.com/flex/halo"> 

<fx:Style> 
@namespace s "library://ns.adobe.com/flex/spark"; 
@namespace mx "library://ns.adobe.com/flex/halo"; 

.upStyle { 
    color:  #FF0000; 
} 

.overStyle { 
    color:  #009900; 
} 

.downStyle { 
    color:  #00FF00; 
} 

.disabledStyle { 
    color:  #666666; 
} 

</fx:Style> 

<s:states> 
    <s:State name="up" /> 
    <s:State name="over" /> 
    <s:State name="down" /> 
    <s:State name="disabled" /> 
</s:states> 

<s:Label 
    id="labelDisplay" 
    styleName.up="upStyle" 
    styleName.over="overStyle" 
    styleName.down="downStyle" 
    styleName.disabled="disabledStyle"/> 

<s:Rect width="100%" height="1" includeIn="over,up" bottom="0"> 
    <s:fill> 
     <s:SolidColor color.over="#009900" color.up="#0000FF"/> 
    </s:fill> 
</s:Rect> 

</s:Skin> 

的按钮的代码如下

<s:Button label="Open Menu" id="bluebtn" skinClass="skins.HTMLBtn" /> 
<s:Button label="Close Menu" id="yellowbtn" skinClass="skins.YellowSkin" /> 

但它适用HTMLBtn皮肤都打开菜单和关闭菜单按钮。

+0

我不明白:是''YellowSkin'的HTMLBtn'一个子类?这种黄色是如何应用的? – RIAstar 2013-05-07 19:55:29

回答

0

按照你上面的例子在Flash Builder 4.6与3.4 AIR:

<s:Button id="bluebtn" label="Open Menu" skinClass="skins.HTMLBtnBlue"/> 
<s:Button id="yellowbtn" label="Close Menu" skinClass="skins.HTMLBtnYellow"/> 

我曾与这个没有问题。

Skin Class "HTMLBtnYellow": 

    <?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" 
    xmlns:mx="library://ns.adobe.com/flex/halo"> 

<fx:Style> 
    @namespace s "library://ns.adobe.com/flex/spark"; 
    @namespace mx "library://ns.adobe.com/flex/halo"; 

    .upStyle { 
     color:  #FF0000; 
    } 

    .overStyle { 
     color:  #009900; 
    } 

    .downStyle { 
     color:  #00FF00; 
    } 

    .disabledStyle { 
     color:  #666666; 
    } 

</fx:Style> 

<s:states> 
    <s:State name="up" /> 
    <s:State name="over" /> 
    <s:State name="down" /> 
    <s:State name="disabled" /> 
</s:states> 


<s:Rect width="100%" height="1" includeIn="over,up" bottom="0"> 
    <s:fill> 
     <s:SolidColor color.over="#009900" color.up="#F8C313"/> 
    </s:fill> 
</s:Rect> 

<s:Label 
    id="labelDisplay" 
    styleName.up="upStyle" 
    styleName.over="overStyle" 
    styleName.down="downStyle" 
    styleName.disabled="disabledStyle"/> 

外观类 “HTMLBtnBlue”:

<?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" 
    xmlns:mx="library://ns.adobe.com/flex/halo"> 

<fx:Style> 
    @namespace s "library://ns.adobe.com/flex/spark"; 
    @namespace mx "library://ns.adobe.com/flex/halo"; 

    .upStyle { 
     color:  #FF0000; 
    } 

    .overStyle { 
     color:  #009900; 
    } 

    .downStyle { 
     color:  #00FF00; 
    } 

    .disabledStyle { 
     color:  #666666; 
    } 

</fx:Style> 

<s:states> 
    <s:State name="up" /> 
    <s:State name="over" /> 
    <s:State name="down" /> 
    <s:State name="disabled" /> 
</s:states> 

<s:Label 
    id="labelDisplay" 
    styleName.up="upStyle" 
    styleName.over="overStyle" 
    styleName.down="downStyle" 
    styleName.disabled="disabledStyle"/> 

<s:Rect width="100%" height="1" includeIn="over,up" bottom="0"> 
    <s:fill> 
     <s:SolidColor color.over="#009900" color.up="#0000FF"/> 
    </s:fill> 
</s:Rect> 

+0

我的问题已经解决,当我使用标签属性color.up =“#F8C313”,而不是使用styleName.up =“upStyle” – eChampions 2013-05-09 18:16:04

+0

请发表您的答案作为答案并将其标记为已解决,以便其他人可以从您的解决方案中学习。 – 2013-05-09 23:21:12