先看官方文档,搜索TextArea,有这么一句话:“TextArea 控件支持 Flash Player 和 AIR 的 HTML 呈示功能”,什么意思呢,就是说我们的TextArea控件可以像浏览器那样对HTML代码进行解析成某种样式显示。当然,Flex3和Flex4对其的实现是不太一样的,下面分别说明。

    在Flex3中,TextArea提供了htmlText这个属性,下面我们通过一个示例来说明其用法.

    在mxml文档内,如果直接使用的话,代码如下:

 
  
  1. <mx:TextArea> 
  2.     <mx:htmlText> 
  3.          这里写HTML代码 
  4.     </mx:htmlText> 
  5. </mx:TextArea> 

    这个时候,就会直接在TextArea里面呈现你的HTML代码的内容及样式。

     如果使用外部的as文件,代码如下

    HtmlTextTest.as

 
  
  1. public class HtmlTextTest{ 
  2.     public var text:String = "HTML代码"

    然后在mxml文件中引用这个as文件

 
  
  1. var ht:HtmlTextTest = new HtmlTextTest(); 
  2. ta.htmlText = ht.text; 

    这时候就会在页面上显示as文件中text的HTML代码说呈现的效果。

    Flex4发生了那些变化呢

    先看官方文档,里面是这样说的:“...现在包含一个Text布局框架(Text Layout Frame  TLF),而TLF可以作为许多Spark text组件基础,包括RichText、RichEditableText、TextArea、TextInput等,并且可以使这些组件成为其他组件的子不件,比如Combox...”

    那么,具体该如何写呢,这里我给出几份代码。

代码 1

 
  
  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"  
  3.                xmlns:s="library://ns.adobe.com/flex/spark"  
  4.                xmlns:mx="library://ns.adobe.com/flex/mx"  
  5.                minWidth="955" minHeight="600"  
  6.                creationComplete="init(event)"> 
  7. <fx:Script> 
  8.         <![CDATA[ 
  9.             import flashx.textLayout.conversion.TextConverter; 
  10.             import flashx.textLayout.elements.TextFlow; 
  11. protected function button1_clickHandler(event:MouseEvent):void 
  12.             { 
  13.                 ta.textFlow = TextConverter.importToFlow(re.text,TextConverter.TEXT_FIELD_HTML_FORMAT); 
  14.             } 
  15.         ]]> 
  16.     </fx:Script> 
  17.     <fx:Declarations> 
  18.         <!-- 将非可视元素(例如服务、值对象)放在此处 --> 
  19.     </fx:Declarations> 
  20. <s:HGroup> 
  21.         <s:VGroup> 
  22.             <s:TextInput id="ti"  /> 
  23.             <mx:RichTextEditor id="re" width="410" height="400"/> 
  24.             <s:Button  click="button1_clickHandler(event)" /> 
  25.             <s:TextArea id="ta" x="7" y="144" width="403"/> 
  26.         </s:VGroup> 
  27.     </s:HGroup> 
  28. </s:Application> 

     这份代码功能就是一个RichtextEditor中输入HTML代码,然后点击按钮后解析后显示在TextArea中

代码 2

 
  
  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"  
  3.                xmlns:s="library://ns.adobe.com/flex/spark"  
  4.                xmlns:mx="library://ns.adobe.com/flex/mx"  
  5.                minWidth="955" minHeight="600"  
  6.                creationComplete="init(event)"> 
  7.     <fx:Script> 
  8.         <![CDATA[            
  9. import flashx.textLayout.conversion.ConversionType; 
  10. import flashx.textLayout.conversion.TextConverter; 
  11. import flashx.textLayout.elements.TextFlow; 
  12. protected function button1_clickHandler(event:MouseEvent):void 
  13.             {                   
  14.                 ta1.text =  TextConverter.export(ta.textFlow,
  15. TextConverter.TEXT_FIELD_HTML_FORMAT,ConversionType.STRING_TYPE).toString(); 
  16.             } 
  17.         ]]> 
  18.     </fx:Script> 
  19.      
  20.     <fx:Declarations> 
  21.         <!-- 将非可视元素(例如服务、值对象)放在此处 --> 
  22.     </fx:Declarations> 
  23.     <s:HGroup> 
  24.         <s:VGroup> 
  25.             <s:TextInput id="ti"  /> 
  26.             <mx:RichTextEditor id="re" width="410" height="400"/> 
  27.             <s:Button  click="button1_clickHandler(event)" /> 
  28.             <s:Button  click="button2_clickHandler(event)" /> 
  29.             <s:TextArea id="ta1" x="7" y="144" width="403"/> 
  30.         </s:VGroup> 
  31.     </s:HGroup> 
  32. </s:Application> 

    这份代码是将RichTextEditor中普通文本转换成HTML代码。