Мне любопытно посмотреть, сможет ли кто-нибудь пролить свет на странное поведение рендеринга текста в компоненте 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%
), текст будет отображаться правильно.
Насколько я понимаю, это поведение непреднамеренно и, по сути, является ошибкой.