0

我直接从我从谷歌 API 收到的字符串中将标签提供给我的 LinkBut​​ton,该 API 将 html 用于格式化标签。

我想扩展链接按钮以允许这样做。我自己写了一个类来允许标签的 html 文本,它的这方面工作,但现在当你悬停时出现的背景太大了。我试图覆盖 measure() 来解决这个问题,但我不知道如何。这是我写的课程:

package com.kranichs.components
{
    import mx.controls.LinkButton;

    public class HTMLLinkButton extends LinkButton
    {
        protected var _isHTML:Boolean;

        public function HTMLLinkButton()
        {
            super();
        }

        [Bindable]
        public function set isHTML(value:Boolean):void
        {
            _isHTML = value;
        }
        public function get isHTML():Boolean
        {
            return _isHTML;
        }

        override protected function updateDisplayList(unscaledWidth:Number,
                                                  unscaledHeight:Number):void
        {
            super.updateDisplayList(unscaledWidth, unscaledHeight);
            if(_isHTML)
            {
                textField.htmlText = label;
            }
        }



    }
}
4

1 回答 1

0

measure() 函数是关键。

假设您使用的是 flex 兼容版本 >= 3.0,关键行在 Button.measure() 中:

var lineMetrics:TextLineMetrics = measureText(label);

您需要将其更改为:

var lineMetrics:TextLineMetrics = _isHTML ? measureHTMLText(label) : measureText(label);

您可能需要将测量功能从按钮复制​​到您的类中并进行此更改。

如果这样做,您很可能需要导入内部命名空间,如下所示:

import mx.core.mx_internal;

use namespace mx_internal;
于 2009-05-26T18:29:53.727 回答