【问题标题】:How can I read a spark TextArea implicit line breaks?如何读取火花 TextArea 隐式换行符?
【发布时间】:2012-05-22 16:03:42
【问题描述】:

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

环境

  • FlexBuilder 4.6
  • Flex SDK 4.6.0
  • Flash 播放器 11.1

示例

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

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

【问题讨论】:

  • 分享您的代码?用户如何更改文本区域的高度和宽度?我不认为这是支持“开箱即用”的。你确定没有 CF/LF 字符吗?

标签: apache-flex flash-builder


【解决方案1】:

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

  • 首先访问您的 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

【讨论】:

  • RIAstar,效果很好。感谢您的详细解释和示例。我的解决方案有第二个文本框,其 lineBreak 设置为显式,文本是从原始文本框复制的,并且显式换行符被插入到文本字符串中。
猜你喜欢
  • 2013-02-27
  • 2018-06-19
  • 2019-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多