我有一个文本区域,用户可以在其中输入文本,还可以更改文本区域的宽度和高度。调整大小时,文本在预期位置中断。我需要找到调整大小后 TextArea 皮肤添加隐式换行符的位置。
环境
- 弹性生成器 4.6
- 弹性开发工具包 4.6.0
- Flash Player 11.1
例
This is just plain text that
breaks after the word "that".
关于当 TextArea lineBreak 属性为 toFit 并且文本没有 CR 或 LF 字符时如何找到换行符的位置的任何想法?在上面的示例中,它将是位置 28。
您可以将文本拆分为行组件并轻松返回它们各自的文本长度,但您必须使用一些"文本布局框架"魔法。
- 首先访问 TextArea 的
textFlow
属性(不是text
属性(,该属性将返回 TextFlow 实例。这是文本区域中文本的模型。 - 这个对象有一个
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