我正在构建文字气球以在Flash中显示可变长度的消息。我的问题很简单,但答案可能不是。Flash TextField,动态大小
我:
- 的字符串我想显示。
- 字体信息。
- 我希望文本字段具有的宽度/高度比。
如何计算文本字段的宽度和高度,以显示文本我只给它,没有更多,没有什么更少的?
我正在构建文字气球以在Flash中显示可变长度的消息。我的问题很简单,但答案可能不是。Flash TextField,动态大小
我:
如何计算文本字段的宽度和高度,以显示文本我只给它,没有更多,没有什么更少的?
我能想到最简单的事情是创建一个文本框,设置自定义字体,然后让文字大小:
例如
var field:TextField = new TextField();
field.defaultTextFormat = new TextFormat('Verdana',12,0xDEDEDE);
field.text = 'someText';
trace(field.textWidth + '/' + field.textHeight);
textWidth和textHeight应该给你正确的数字,而不是width和height属性。如果您需要更多细节,请查看TextLineMetrics class。
HTH, 乔治
这将工作。我需要的文字跨越多行,但我可以计算出来。 (TW /行)/(TH *行)= WHRATIO。然后字段宽度= TW /行 – 2010-02-23 13:46:38
解决方案:lines = sqrt((width/height)/ ratio) – 2010-02-24 15:43:30
。您可以使用相同的字段获取高度.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);
我想过了。但是textWidth和textField宽度之间存在差异。 George Profenza在他的回答中指出的TextLineMetrics类能够更好地理解这个问题。 – 2010-02-23 16:10:50
我正在使用autosize,但我仍然需要设置正确的宽度以实现具有所需宽度/高度比率的文本字段。 – 2010-02-24 15:43:05
您是否使用等宽字体? ;) – 2010-02-23 13:24:33
也许我不理解你的问题,但是如果你创建了一个textfield对象,而不是设置你的文本,你不能简单地阅读textObject的宽度吗? like: var tf:TextField = new TextField(); tf.autoSize = TextFieldAutoSize.LEFT; tf.text ='要显示的字符串'; 跟踪(tf.width,tf.height) – 2010-02-23 13:30:54