让Spark文本组件支持Html标签

默认下Spark 文本组件是不支持Html标签的,但我们可以使用TextConverter类中的importToFlow()方法解决这个问题。

看下面代码:

package controls
{
    import flashx.textLayout.conversion.TextConverter;
    import flashx.textLayout.elements.TextFlow;
     
    import spark.components.RichText;
     
    public class RichHtmlText extends RichText
    {
        public function RichHtmlText()
        {
            super();
        }
         
        private var _htmlText:String
         
        public function get htmlText():String
        {
            return _htmlText;
        }
         
        public function set htmlText(value:String):void
        {
            _htmlText = value;
            var tf:TextFlow = TextConverter.importToFlow(value, TextConverter.TEXT_FIELD_HTML_FORMAT);
            this.textFlow = tf;
        }
    }
}

上面代码中,我们使用importToFlow()方法,基于Html格式的文本创建了TextFlow实例,再将该实例指定为该文本的TextFlow对象,从而扩展了RichText 类,使其支持支持Html标签。该自定义类用法很简单,将Html文本赋值给htmlText属性即可,和MX文本组件的用法类似。

如果要支持Html标签,Adobe建议使用MX文本组件,因为它们比Spark文本组件轻量,但MX文本组件不支持Text Layout Framework (TLF)中的新特性。因此是使用MX文本组件还是本文中扩展的Spark 文本组件,视项目需要而定。

发表评论