2010-02-23 67 views
1

我正在构建文字气球以在Flash中显示可变长度的消息。我的问题很简单,但答案可能不是。Flash TextField,动态大小

我:

  • 的字符串我想显示。
  • 字体信息。
  • 我希望文本字段具有的宽度/高度比。

如何计算文本字段的宽度和高度,以显示文本我只给它,没有更多,没有什么更少的?

+0

您是否使用等宽字体? ;) – 2010-02-23 13:24:33

+0

也许我不理解你的问题,但是如果你创建了一个textfield对象,而不是设置你的文本,你不能简单地阅读textObject的宽度吗? like: var tf:TextField = new TextField(); tf.autoSize = TextFieldAutoSize.LEFT; tf.text ='要显示的字符串'; 跟踪(tf.width,tf.height) – 2010-02-23 13:30:54

回答

6

我能想到最简单的事情是创建一个文本框,设置自定义字体,然后让文字大小:

例如

var field:TextField = new TextField(); 
field.defaultTextFormat = new TextFormat('Verdana',12,0xDEDEDE); 
field.text = 'someText'; 
trace(field.textWidth + '/' + field.textHeight); 

textWidthtextHeight应该给你正确的数字,而不是width和height属性。如果您需要更多细节,请查看TextLineMetrics class

HTH, 乔治

+0

这将工作。我需要的文字跨越多行,但我可以计算出来。 (TW /行)/(TH *行)= WHRATIO。然后字段宽度= TW /行 – 2010-02-23 13:46:38

+0

解决方案:lines = sqrt((width/height)/ ratio) – 2010-02-24 15:43:30

1
如果打开的autoSize应该调整你的文本字段的高度,你

。您可以使用相同的字段获取高度.textHeight

var field:TextField = new TextField(); 
field.autoSize = "left"; 
field.multiline = true; 
field.defaultTextFormat = new TextFormat('Verdana',12,0xDEDEDE); 
field.text = 'someText'; 
trace(field.textWidth + '/' + field.textHeight); 
+0

我想过了。但是textWidth和textField宽度之间存在差异。 George Profenza在他的回答中指出的TextLineMetrics类能够更好地理解这个问题。 – 2010-02-23 16:10:50

+0

我正在使用autosize,但我仍然需要设置正确的宽度以实现具有所需宽度/高度比率的文本字段。 – 2010-02-24 15:43:05