Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash TextField多行+;换行获取文本高度_Flash_Actionscript 3_Text - Fatal编程技术网

Flash TextField多行+;换行获取文本高度

Flash TextField多行+;换行获取文本高度,flash,actionscript-3,text,Flash,Actionscript 3,Text,我有一个启用了多行和换行功能的文本字段,并且具有固定的宽度。我想计算其中文本的总高度 我尝试使用TextField.textHeight,但这给了我一行的高度。由于包装的原因,我不能简单地计算线的数量来乘以线的高度TextField.height只给出字段的固定默认高度,100像素 那么怎么做呢?您的代码中一定有错误,因为textHeight应该返回您的TextField高度,而不仅仅是一行高度。请确保包含wordWrap 这将跟踪txt.textHeight=135 var format:Te

我有一个启用了多行和换行功能的文本字段,并且具有固定的宽度。我想计算其中文本的总高度

我尝试使用
TextField.textHeight
,但这给了我一行的高度。由于包装的原因,我不能简单地计算线的数量来乘以线的高度
TextField.height
只给出字段的固定默认高度,100像素


那么怎么做呢?

您的代码中一定有错误,因为textHeight应该返回您的TextField高度,而不仅仅是一行高度。

请确保包含wordWrap

这将跟踪txt.textHeight=135

var format:TextFormat = new TextFormat(); format.font = new Bauhaus ().fontName; var txt:TextField = new TextField(); txt.embedFonts = true; txt.multiline = true; txt.defaultTextFormat = format; txt.wordWrap = true; txt.width = 100; txt.text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi metus diam, condimentum sagittis rutrum vitae, vehicula et velit."; addChild(txt); trace("txt.textHeight "+txt.textHeight); var format:TextFormat=newtextformat(); format.font=新包豪斯().fontName; var txt:TextField=new TextField(); txt.embedFonts=true; txt.multiline=true; txt.defaultTextFormat=格式; txt.wordWrap=true; txt.width=100; txt.text=“Lorem ipsum dolor sit amet,是一位杰出的领导者。Morbi metus diam,Sagitti rutrum vitae调味品,vehicula et velit。”; addChild(txt);
跟踪(“txt.textHeight”+txt.textHeight) 我从中找到了一个解决方案

以下两种方法对我来说都非常适用于单行、多行换行(仅文本换行和\n)和多行无换行(仅\n)

简短假设版本(不要使用此选项):

行具有不同度量的版本越长越好(使用此选项):

var=2;
var totalines=textField.bottomScrollV-textField.scrollV+textField.maxsollv;
var实际高度=0;
var=0;
对于(var i=0;i

对于具有内联图像的单行测试,其中textField高度为32,textHeight为39,计算的高度(上面的实际高度)为34。对于多行测试,高度为97.20,文本高度为23.79,实际高度为97.15。实际高度包括两侧的排水沟,但如果有,则去掉尾随引线。

也许我的代码中有错误,但现在没问题了。我真的不记得我是如何或何时修复的。TextField高度实际上是(textHeight+4)。TextField在文本周围包含一个2px边距,因此如果autoSize不是TextFieldAutoSize.NONE,则TextField的高度将自动调整为textHeight+(2px顶部边距)+(2px底部边距)。请参阅:将wordWrap设置为true将导致水平自动调整大小停止,但仍将垂直自动调整大小。
var totalLines = textField.bottomScrollV - textField.scrollV + textField.maxScrollV;
var metrics    = textField.getLineMetrics(0);
var gutter     = 2;
var actualHeight = (metrics.ascent + metrics.descent) * totalLines + (totalLines - 1) * metrics.leading + 2 * gutter;
var gutter  = 2;
var totalLines = textField.bottomScrollV - textField.scrollV + textField.maxScrollV;

var actualHeight = 0;
var prevLeading = 0;
for (var i = 0; i < totalLines; i += 1)
{
    var metrics = textField.getLineMetrics(i);
    actualHeight += metrics.ascent + metrics.descent + prevLeading;
    prevLeading = metrics.leading;
}
actualHeight += 2 * gutter;