在以下完整功能的Flex应用程序中,在将输入文本导入TextFlow时,应保留两个链接之间的换行符:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:s="library://ns.adobe.com/flex/spark"
minWidth="955" minHeight="600"
creationComplete="application1_creationCompleteHandler(event)"
>
<fx:Script>
<![CDATA[
import flashx.textLayout.formats.WhiteSpaceCollapse;
import mx.events.FlexEvent;
import spark.utils.TextFlowUtil;
protected function application1_creationCompleteHandler(event : FlexEvent) : void
{
input.text = "<a href='#'>link1</a>\n<a href='#'>link2</a>";
}
protected function button1_clickHandler(event : MouseEvent) : void
{
output.textFlow = TextFlowUtil.importFromString(input.text, WhiteSpaceCollapse.PRESERVE);
}
]]>
</fx:Script>
<s:RichEditableText text=""
id="input"
width="266" height="215"
x="10" y="30"
/>
<s:Label text="Input"
x="10" y="10"
/>
<s:Label text="Output"
x="8" y="286"
/>
<s:Button x="10" y="253"
click="button1_clickHandler(event)"
label="Import"
/>
<s:RichEditableText id="output"
width="399" height="212"
x="10" y="306"
/>
</s:Application>
但是,如果单击“导入”,您将看到在同一行中创建的两个链接(没有中断)。
如果在源文本中的链接之间添加任何非空白字符,则会更改。这意味着,如果您只是在链接之间添加“*”,则会保留换行符。
是什么给出的?这是一个Flex错误吗?
答案 0 :(得分:0)
您可能需要调整全局XML解析设置。这些可以作为XML
类的静态属性访问。我的预感是解析时XML.ignoreWhitespace
为true
。请尝试以下方法:
XML.ignoreWhitespace = false;
output.textFlow = TextFlowUtil.importFromString(input.text, WhiteSpaceCollapse.PRESERVE);
答案 1 :(得分:0)
这是解决此错误的方法,无需更改任何XML设置,简单且有效:
导出TextFlow
:
var richTextXML:xml = new XML("<"+"richTextXML"+"/>");
richTextXML.appendChild(getCdataXMl());
private function getCdataXMl():xml {
var textFlowStr:String = TextConverter.export(textFlow,TextConverter.TEXT_FIELD_HTML_FORMAT, ConversionType.STRING_TYPE).toString();
var textFlowXMl:xml = new XMl("<![CDATA["+textFlowStr+"]]>");
return textFlowXMl;
}
从XML导入TextFlow
:
var htmlTextInStr:String = richTextXMl.text();
var importtedTextFlow:TextFlow = TextConverter.importToFlow(htmlTextInStr,TextConverter.TEXT_FIELD_HTML_FORMAT);
textArea.textFlow = importtedTextFlow;