Flex TextFlowUtil.importFromString игнорирует пробелы в некоторых случаях. Это ошибка? - PullRequest
0 голосов
/ 17 февраля 2011

В следующем полнофункциональном приложении 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?

Ответы [ 2 ]

0 голосов
/ 09 апреля 2012

Это способ решить эту ошибку, и нет необходимости изменять какие-либо настройки 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;
}

Импорт TextFlow из XML:

var htmlTextInStr:String = richTextXMl.text();
var importtedTextFlow:TextFlow = TextConverter.importToFlow(htmlTextInStr,TextConverter.TEXT_FIELD_HTML_FORMAT);
textArea.textFlow = importtedTextFlow;
0 голосов
/ 18 февраля 2011

Возможно, вам придется настроить глобальные параметры синтаксического анализа XML.Они доступны как статические свойства класса XML.Я догадываюсь, что XML.ignoreWhitespace это true во время анализа.Попробуйте следующее:

XML.ignoreWhitespace = false;
output.textFlow = TextFlowUtil.importFromString(input.text, WhiteSpaceCollapse.PRESERVE);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...