如何禁用Flex3按钮上的图标

时间:2011-06-09 14:52:39

标签: flex button flex3 icons

我有一个用于发送信息的按钮。当消息文本为空时,不应该单击该按钮。

这很好,不是问题。唯一让我烦恼的是我可以禁用发送按钮,但图像不会被禁用(就像我期望的那样)。

有没有办法优雅地执行此操作,因为我不想提供sendicon_disabled.png并自行更改(我不认为这应该是我的工作)。

1 个答案:

答案 0 :(得分:3)

您可以使用以下按钮:

package
{
    import mx.controls.Button;
    import mx.core.mx_internal;

    use namespace mx_internal;

    public class IconButton extends Button
    {
        private var enabledChanged:Boolean = false;

        override public function set enabled(value:Boolean):void
        {
            if (super.enabled == value)
            {
                return;
            }
            super.enabled = value;
            enabledChanged = true;
            invalidateDisplayList();
        }

        override protected function updateDisplayList(unscaledWidth:Number,
                                                      unscaledHeight:Number):void
        {
            super.updateDisplayList(unscaledWidth, unscaledHeight);
            if (enabledChanged)
            {
                if (!enabled && currentIcon)
                {
                    currentIcon.alpha = 0.5;
                }
                enabledChanged = false;
            }
        }
    }
}

您可以使用自定义alpha值或将其移至单独的样式。