检测文本所需的行数

时间:2011-12-21 21:19:27

标签: actionscript-3

这个适用于所有TextField向导。我有一个显示2段文本的文本字段。我希望被截断的第一个最多显示3行文本。第2段将附在该文本之后。

有没有办法只显示第一段的前3行?可以把它想象成第一段文章的摘要。

我尝试使用String.subStr(0,猜测3行字符),但是它很不一致,因为某些字符串会占用文本字段的4行。

我考虑过做两个单独的文本字段,但是在第一段只有1行字符的情况下,第二段之间会有2行字符间隔。

2 个答案:

答案 0 :(得分:3)

textField = new TextField();
textField.antiAliasType = AntiAliasType.ADVANCED;
textField.width = _boundaryWidth;
textField.autoSize = TextFieldAutoSize.NONE;
textField.multiline = true;
textField.wordWrap = true;
textField.text = _text;
textField.setTextFormat(textFormat);
while( textField.numLines > 3 )
{
    var txt:String = textField.getLineText(textField.numLines - 1 );
    textField.replaceText(textField.text.length - txt.length,textField.text.length, "");
    var numLines:int = textField.numLines;
}

这段代码应该可以满足您的需求。

您需要做的就是检查文本覆盖的行数。最初设置宽度是因为这有助于文本字段决定需要分散的行数。我还没有创建一个包含所有这些的功能。但我想这应该很简单,因为整个函数体都在这里。

答案 1 :(得分:2)

看看TextField#getLineOffset()。它将返回指定行上第一个字符的字符索引 - 您可以使用substr或substring相应地截断文本。