如何读取Spark TextArea隐式换行符?

时间:2012-05-22 16:03:43

标签: flex flash-builder

我有一个TextArea,用户可以在其中输入文本,还可以更改TextArea的宽度和高度。调整大小时,文本会在预期的位置打破。我需要找到TextArea外观在调整大小后添加隐式换行符的位置。

环境

  • FlexBuilder 4.6
  • Flex SDK 4.6.0
  • Flash Player 11.1

示例

This is just plain text that
breaks after the word "that".

当TextArea lineBreak属性为toFit并且文本没有CR或LF字符时,有关如何查找换行符位置的任何想法?在上面的例子中,它将是第28位。

1 个答案:

答案 0 :(得分:0)

您可以将文本拆分为线条组件并轻松返回其各自的文本长度,但您必须使用一些“文本布局框架”魔术。

  • 首先访问TextArea的textFlow属性(而不是text属性),该属性将返回TextFlow个实例。这是TextArea中文本的模型。
  • 此对象有一个flowComposer,它负责处理文本的布局并随身携带大量信息。
  • 其类型为IFlowComposer,但您必须将其转换为StandardFlowComposer才能访问各行。
  • 现在您可以访问lines属性,该属性是TextFlowLine
  • 的集合
  • 这些行中的每一行都有textLength属性。

以下

var composer:StandardFlowComposer = 
    myTextArea.textFlow.flowComposer as StandardFlowComposer;
for each (var line:TextFlowLine in composer.lines) 
    trace(line.textLength)

会产生(用你的例子)

29
30