Благодаря 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
, чтобы добавить промежутки между параграфами. Вы также можете добавить стиль в любой конкретный параграф, чтобы дать вам еще более подробный контроль над их позиционированием.
Трудный путь
Если вы действительно необходимо для очень специфического контроля (например, если три Textboxes должен быть в трех совершенно отдельных местах), то вы можете сделать это следующим образом:
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" />
КАК
//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 для этого, так как он уже использует собственный компоновщик flowactionposiser и собственный менеджер взаимодействия, который будет конфликтовать с теми, которые я назначаю. Теперь вы можете поместить и изменить размер трех контейнеров по своему усмотрению.
Но помните: Большинство вариантов использования можно решить с помощью некоторого стиля на простом решении. (MXML, который я использовал в качестве примера здесь, на самом деле просто, чтобы оправдать этот подход, но я должен был передать идею в простой форме)
Ну, это может быть способ скопировать текст с помощью кода. Но, как я уже сказал в вопросе, я смотрю, можно ли создать ситуацию, когда конечный пользователь мог бы перетащить и выделить между текстом. То, как они ожидали бы иметь возможность на собственном HTML-документе – brybam