2010-02-23 35 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