Визуализация текста в Flex 4 в компоненте s: RichEditableText - PullRequest
1 голос
/ 01 марта 2011

Мне любопытно посмотреть, сможет ли кто-нибудь пролить свет на странное поведение рендеринга текста в компоненте Spark RichEditableText.

<?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"

creationComplete="handleApplicationCreationComplete()"
>
<fx:Script>
    <![CDATA[
        import flashx.textLayout.conversion.TextConverter;

        private static const DATA:Array =
        [
            "First sentence. This is a test of text rendering. How's it look?",
            "Let's see if this actually works correctly.",
            "Add some variety with the <b>bold</b> tag...",
            "Throw in a <a href='http://www.example.com'>link</a> as well!",
            "Well?! Does it work as expected? I think not..."
        ];

        private var currentIdx:int;

        protected function handleNextClick():void
        {
            currentIdx++;
            if(currentIdx >= DATA.length)
                currentIdx = 0;
            display(currentIdx);
        }

        protected function handleApplicationCreationComplete():void
        {
            currentIdx = 0;
            display(currentIdx);
        }

        private function display(idx:int):void
        {
            contentDisplay.textFlow = TextConverter.importToFlow(DATA[idx], TextConverter.TEXT_FIELD_HTML_FORMAT);
        }
    ]]>
</fx:Script>

<s:layout>
    <s:VerticalLayout />
</s:layout>

<s:VGroup width="100">
    <s:RichEditableText id="contentDisplay"
        width="100%"
        enabled="false" mouseEnabled="false"
        editable="false" focusEnabled="false"
    />
</s:VGroup>
<s:Button label="Next" click="handleNextClick()" />
</s:Application>

Приведенное выше приложение просто перемещается по пяти предложениям в DATAмассив (каждый раз, когда нажимается кнопка Next).По какой-то причине компонент RichEditableText не полностью сбрасывает свой вид (путем очистки предыдущего текста) перед установкой нового содержимого.Из того, что я могу извлечь, этот неправильный рендеринг как-то основан на комбинации количества строк и относительной ширины.Я также обнаружил, что если установить для свойства width компонента RichEditableText абсолютное значение (скажем, 100), а не относительное (в процентах, 100%), текст будет отображаться правильно.

Насколько я понимаю, это поведение непреднамеренно и, по сути, является ошибкой.

Text on startup

Text after

Text after

Ответы [ 2 ]

0 голосов
/ 18 сентября 2012

Это ошибка в 4.1 SDK.Чтобы обойти эту проблему, вы можете очистить RTE и затем обновить его в последующем фрейме.

callLater(function workAround(richEditableText:RichEditableText, updateText:String):void
{
    richEditableText.text = updateText;
}
, [ myRichEditableTextComponent, myNewMessageText ]);

Просто поместите этот код туда, где вы ранее обновляли RET, и пропустите компонент и новый текст.Это должно работать так же, если вы используете поток текста, просто замените текст и текстовую строку потоком.

0 голосов
/ 20 января 2012

решения нет, это ошибка в фреймворке ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...