Как расширить LinkButton, чтобы разрешить HTML-текст во Flex? - PullRequest
0 голосов
/ 26 мая 2009

Я передаю метку на свой LinkButton напрямую из строки, которую я получаю от API Google, который помещает 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;
            }
        }



    }
}

1 Ответ

0 голосов
/ 26 мая 2009

функция 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;
...