0

html を配置してラベルをフォーマットする Google API から受け取った文字列から直接 LinkBut​​ton にラベルをフィードしています。

これを可能にするために linkbutton を拡張したいと思います。ラベルに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()関数が重要です。

フレックス互換バージョン>=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 に答える