【问题标题】:Skinning a link button为链接按钮蒙皮
【发布时间】:2014-01-04 19:55:51
【问题描述】:

这是我修改后的代码。这里我给出了皮肤类和选择颜色。

最新代码

<mx:LinkButton label="home" styleName="Helvetica22555555" id="homeBtn" fontSize="14" color="#ffffff"
                       useHandCursor="true" buttonMode="true" 
                       skin="{com.firstplanet.utils.ULinkButtonSkin}" toggle="true" selectionColor="0xC0D3E2"/>
        <mx:LinkButton label="course" styleName="Helvetica22555555" id="link"  fontSize="14" color="#ffffff"
                       skin="{com.firstplanet.utils.ULinkButtonSkin}" selectionColor="0xC0D3E2"/>
        <mx:LinkButton label="dashboard" styleName="Helvetica22555555" fontSize="14" color="#ffffff"
                       skin="{com.firstplanet.utils.ULinkButtonSkin}" toggle="true" selectionColor="0xC0D3E2"/>
        <mx:LinkButton label="logout" styleName="Helvetica22555555" fontSize="14" color="#ffffff"
                       useHandCursor="true" buttonMode="true"
                       skin="{com.firstplanet.utils.ULinkButtonSkin}" toggle="true" selectionColor="0xC0D3E2"/>

以及我根据以下分析使用的皮肤类

 package com.firstplanet.utils
 {
import mx.skins.halo.LinkButtonSkin;

public class ULinkButtonSkin extends LinkButtonSkin
{
    public function ULinkButtonSkin()
    {
        super();
    }

    override protected function updateDisplayList(w:Number, h:Number):void
    {
        var cornerRadius:Number = getStyle("cornerRadius");
        var selectionColor:uint = getStyle("selectionColor");
        graphics.clear();

        switch (name)
        {           
            case "selectedUpSkin":
            case "selectedOverSkin":
            case "selectedDownSkin":
            {
                drawRoundRect(0, 0, w, h, cornerRadius, selectionColor, 1);
                break;
            }
            default:
            {
                super.updateDisplayList(w, h);
                break;
            }
        }
    }
}
}

但它不起作用。如果我将选择一个按钮,那么其他按钮也会随之突出显示。

【问题讨论】:

    标签: actionscript-3 apache-flex actionscript flex4


    【解决方案1】:

    用法:

    <local:ULinkButton label="Red Link Button" skin="ULinkButtonSkin" toggle="true" selectionColor="0xFF0000"/>
    

    改变背景颜色的皮肤:

    package
    {
    import mx.skins.halo.LinkButtonSkin;
    
    public class ULinkButtonSkin extends LinkButtonSkin
    {
        public function ULinkButtonSkin()
        {
            super();
        }
    
        override protected function updateDisplayList(w:Number, h:Number):void
        {
            var cornerRadius:Number = getStyle("cornerRadius");
            var selectionColor:uint = getStyle("selectionColor");
            graphics.clear();
    
            switch (name)
            {           
                case "selectedUpSkin":
                case "selectedOverSkin":
                case "selectedDownSkin":
                {
                    drawRoundRect(0, 0, w, h, cornerRadius, selectionColor, 1);
                    break;
                }
                default:
                {
                    super.updateDisplayList(w, h);
                    break;
                }
            }
        }
    }
    }
    

    【讨论】:

    • 好的,那么我如何在选择后突出显示按钮?
    • 看来我把你的任务弄错了)那么,你想在选定状态下更改按钮颜色吗?
    • 是的,我想在链接按钮被选中时突出显示它。
    • 我已经用自定义 LinkBut​​tonSkin 程序化皮肤更新了我的答案。
    • 但是如果有这么多链接按钮,没有链接栏只有按钮,那么这个方法就失败了,如果我选择一个按钮然后另一个按钮被选中,我不知道问题出在哪里。跨度>
    猜你喜欢
    • 1970-01-01
    • 2011-04-13
    • 1970-01-01
    • 2011-12-30
    • 2017-05-31
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多