先看官方文档,搜索TextArea,有这么一句话:“TextArea 控件支持 Flash Player 和 AIR 的 HTML 呈示功能”,什么意思呢,就是说我们的TextArea控件可以像浏览器那样对HTML代码进行解析成某种样式显示。当然,Flex3和Flex4对其的实现是不太一样的,下面分别说明。
在Flex3中,TextArea提供了htmlText这个属性,下面我们通过一个示例来说明其用法.
在mxml文档内,如果直接使用的话,代码如下:
- <mx:TextArea>
- <mx:htmlText>
- 这里写HTML代码
- </mx:htmlText>
- </mx:TextArea>
这个时候,就会直接在TextArea里面呈现你的HTML代码的内容及样式。
如果使用外部的as文件,代码如下:
HtmlTextTest.as
- public class HtmlTextTest{
- public var text:String = "HTML代码";
- }
然后在mxml文件中引用这个as文件
- var ht:HtmlTextTest = new HtmlTextTest();
- ta.htmlText = ht.text;
这时候就会在页面上显示as文件中text的HTML代码说呈现的效果。
Flex4发生了那些变化呢?
先看官方文档,里面是这样说的:“...现在包含一个Text布局框架(Text Layout Frame TLF),而TLF可以作为许多Spark text组件基础,包括RichText、RichEditableText、TextArea、TextInput等,并且可以使这些组件成为其他组件的子不件,比如Combox...”。
那么,具体该如何写呢,这里我给出几份代码。
【代码 1】
- <?xml version="1.0" encoding="utf-8"?>
- <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
- xmlns:s="library://ns.adobe.com/flex/spark"
- xmlns:mx="library://ns.adobe.com/flex/mx"
- minWidth="955" minHeight="600"
- creationComplete="init(event)">
- <fx:Script>
- <![CDATA[
- import flashx.textLayout.conversion.TextConverter;
- import flashx.textLayout.elements.TextFlow;
- protected function button1_clickHandler(event:MouseEvent):void
- {
- ta.textFlow = TextConverter.importToFlow(re.text,TextConverter.TEXT_FIELD_HTML_FORMAT);
- }
- ]]>
- </fx:Script>
- <fx:Declarations>
- <!-- 将非可视元素(例如服务、值对象)放在此处 -->
- </fx:Declarations>
- <s:HGroup>
- <s:VGroup>
- <s:TextInput id="ti" />
- <mx:RichTextEditor id="re" width="410" height="400"/>
- <s:Button click="button1_clickHandler(event)" />
- <s:TextArea id="ta" x="7" y="144" width="403"/>
- </s:VGroup>
- </s:HGroup>
- </s:Application>
这份代码功能就是一个RichtextEditor中输入HTML代码,然后点击按钮后解析后显示在TextArea中。
【代码 2】
- <?xml version="1.0" encoding="utf-8"?>
- <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
- xmlns:s="library://ns.adobe.com/flex/spark"
- xmlns:mx="library://ns.adobe.com/flex/mx"
- minWidth="955" minHeight="600"
- creationComplete="init(event)">
- <fx:Script>
- <![CDATA[
- import flashx.textLayout.conversion.ConversionType;
- import flashx.textLayout.conversion.TextConverter;
- import flashx.textLayout.elements.TextFlow;
- protected function button1_clickHandler(event:MouseEvent):void
- {
- ta1.text = TextConverter.export(ta.textFlow,
- TextConverter.TEXT_FIELD_HTML_FORMAT,ConversionType.STRING_TYPE).toString();
- }
- ]]>
- </fx:Script>
- <fx:Declarations>
- <!-- 将非可视元素(例如服务、值对象)放在此处 -->
- </fx:Declarations>
- <s:HGroup>
- <s:VGroup>
- <s:TextInput id="ti" />
- <mx:RichTextEditor id="re" width="410" height="400"/>
- <s:Button click="button1_clickHandler(event)" />
- <s:Button click="button2_clickHandler(event)" />
- <s:TextArea id="ta1" x="7" y="144" width="403"/>
- </s:VGroup>
- </s:HGroup>
- </s:Application>
这份代码是将RichTextEditor中普通文本转换成HTML代码。
转载于:https://blog.51cto.com/4798354/948993