Благодаря Text Layout Framework теперь вы можете делать практически все, что захотите, с текстом.Но иногда это может быть сложно реализовать.
У меня есть два решения для вас.В зависимости от того, какой уровень управления вам требуется, есть простой и сложный.
Простой способ
В большинстве случаев это решение подойдет хорошо.Я предполагаю, что вы хотите отображать эти тексты в виде абзацев.В этом случае вы можете просто использовать один RichEditableText
и использовать свойство textFlow
вместо text
, например:
MXML
<s:RichEditableText id="textBox" top="100" paragraphSpaceAfter="15" />
AS
textBox.textFlow = TextFlowUtil.importFromString(
"<p>Click and start dragging the highlight here...</p>" +
"<p>Continue dragging the highlight through this one</p>" +
"<p>and keep going and finish highlighting them all right here</p>"
);
Вот и все.Я использовал стиль paragraphSpaceAfter
, чтобы добавить интервал между абзацами.Вы также можете добавить стили к любому конкретному абзацу, чтобы дать вам еще более детальный контроль над их позиционированием.
Трудный путь
Если вам действительно нужен очень специфический контроль(например, если три текстовых поля должны находиться в трех совершенно отдельных местах), вы можете сделать это следующим образом:
MXML
<mx:UIComponent id="obj_one" left="0" top="0" width="300" height="20"/>
<mx:UIComponent id="obj_two" left="50" top="30" width="300" height="20" />
<mx:UIComponent id="obj_three" left="100" top="60" width="200" height="40" />
AS
//create the TextFlow object
var text:TextFlow = TextFlowUtil.importFromString(
"<p>Click and start dragging the highlight here...</p>" +
"<p>Continue dragging the highlight through this one</p>" +
"<p>and keep going and finish highlighting them all right here</p>"
);
//make the text selectable
text.interactionManager = new SelectionManager();
//make all three of the area's control the same TextFlow object
text.flowComposer.addController(
new ContainerController(obj_one, obj_one.width, obj_one.height));
text.flowComposer.addController(
new ContainerController(obj_two, obj_two.width, obj_two.height));
text.flowComposer.addController(
new ContainerController(obj_three, obj_three.width, obj_three.height));
//once the 3 controllers are assigned, recalculate the composition
text.flowComposer.updateAllControllers();
Как вы можете видеть, я не использовал RichEditableText для этого, так как он уже использует свой собственный flowcomposer и взаимодействующий менеджер, который будет конфликтовать с теми, которые я назначаю.Теперь вы можете позиционировать и изменять размеры трех контейнеров по своему усмотрению.
Но помните: большинство вариантов использования могут быть решены с помощью простого стилевого решения.(MXML, который я использовал здесь в качестве примера, на самом деле прост, чтобы оправдать этот подход, но мне пришлось передать идею простым способом)