我正在構建文字氣球以在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