Как динамически добавлять текст и теги внутри textFlow
<s:RichEditableText editable="false" styleName="chatWin" height="550" width="100%">
<s:textFlow>
<s:TextFlow>
<s:p>Inline<s:br />TextFlow</s:p>
</s:TextFlow>
</s:textFlow>
</s:RichEditableText>
Я хочу добавить это <s:p>
пометить динамически, таким образом делая чат... я пробовал это:
var p:p = new p();
но это не работает
1 ответ
Решение
Вместо декларативного потока текста в MXML вы можете программно обновить текст, добавив строковую переменную и переформатировав TextConverter.importToFlow()
,
Пример:
При вводе текст из поля ввода добавляется и переформатируется:
<?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">
<fx:Script>
<![CDATA[
import flashx.textLayout.conversion.TextConverter;
import flashx.textLayout.elements.TextFlow;
import mx.events.FlexEvent;
[Bindable]
public var text:String = "<p>Inline<br />TextFlow</p>";
protected function input_enterHandler(event:FlexEvent):void
{
text += input.text;
input.text = null;
}
]]>
</fx:Script>
<s:layout>
<s:VerticalLayout />
</s:layout>
<s:TextInput id="input"
enter="input_enterHandler(event)" />
<s:RichEditableText editable="false"
selectable="true"
textFlow="{TextConverter.importToFlow(text, TextConverter.TEXT_FIELD_HTML_FORMAT)}"
buttonMode="true"
width="100%"
height="100%" />
</s:Application>