0

我有一个 TextArea,用户可以在其中输入文本并更改 TextArea 的宽度和高度。调整大小时,文本在预期的地方中断。我需要找到 TextArea 皮肤在调整大小后添加隐式换行符的位置。

环境

  • FlexBuilder 4.6
  • 弹性 SDK 4.6.0
  • 闪存播放器 11.1

例子

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

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

4

1 回答 1

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
于 2012-05-22T16:34:07.780 回答