1

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/controls/Label.html - here i see a htmlText property, but when I do this

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

i get an error that there are no htmlText property

flex 4.6, spark label

4

1 回答 1

4

The difference is that you've linked to the documentation for the <mx:Label />, which is a completely different component than <s:Label />. MX component versus a Spark component (or Flex 3 versus Flex 4).

The reason for the difference is that the newer Spark Label component is based off of the Flash Text Engine (FTE), a very low level Actionscript text framework.

There is also another text component that is based off of the Text Layout Framework (that further builds upon the FTE), the RichText component. This doesn't have an htmlText property either, but with TLF you have the ability to supply it with HTML like syntax. Check the docs for RichText if you want to go that route.

With RichText you can do stuff like this:

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

Finally, if you have some HTML that you got from elsewhere, and don't want to manipulate it you have at least two options:

  1. Use the MX version of Label and it's htmlText property
  2. Use the RichText component and the static method TextConverter.importToFlow() to convert your HTML string into a TLF TextFlow object. Once you create the TextFlow, you can use the converted TextFlow and set it on the RichText component's textFlow property, see below.

Using the TextConverter class to import HTML text into a TextFlow object:

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;
于 2013-06-05T23:10:40.290 回答