不能在Label中使用htmlText属性

时间:2013-06-05 22:23:48

标签: flash flex actionscript

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/controls/Label.html - 这里我看到一个htmlText属性,但是当我这样做时

myLabel.htmlText = '<p>some value</p>';

我收到一条错误,表示没有htmlText属性

flex 4.6,spark label

1 个答案:

答案 0 :(得分:4)

区别在于您已链接到<mx:Label />的文档,该文档与<s:Label />完全不同。 MX组件与Spark组件(或Flex 3与Flex 4)。

区别的原因是较新的Spark Label组件基于Flash文本引擎(FTE),这是一个非常低级别的Actionscript文本框架。

还有另一个文本组件基于文本布局框架(进一步构建在FTE上),RichText组件。这也没有htmlText属性,但是使用TLF,您可以使用HTML语法提供它。如果你想走那条路,请检查RichText的文档。

使用RichText,您可以执行以下操作:

<s:RichText>Hello <s:span fontWeight="bold">World!</s:span></s:RichText>

最后,如果您有来自其他地方的HTML,并且不想操纵它,则至少有两个选项:

  1. 使用MX版Label及其htmlText属性
  2. 使用RichText组件和静态方法TextConverter.importToFlow()将HTML字符串转换为TLF TextFlow对象。创建TextFlow后,您可以使用已转换的TextFlow并将其设置在RichText组件的textFlow媒体资源上,如下所示。
  3. 使用TextConverter类将HTML文本导入TextFlow对象:

    private var htmlText:String = "<html><body><p>Hi whirld</p></body></html>";
    private var flow:TextFlow = TextConverter.importToFlow(htmlText, TextConverter.TEXT_FIELD_HTML_FORMAT);
    myRichTextLabel.textFlow = flow;