2009-12-18 76 views
0

我想基於它的字符串內容設置Textfield()對象的寬度,我已經設置 - 有沒有一種方法來動態設置這個字符串被髮送到對象?如何自動設置TextField()的寬度

我:

var t1:TextField = new TextField() 
t1.x = stage.stageWidth/2; 
t1.y = stage.stageHeight/2;   
t1.text = "some string that i would want to render";    
t1.textColor = 0x000000; 
t1.cacheAsBitmap = true; 
addChild(t1); 

感謝您的任何建議... JML

回答

3

TextField.autoSize

編輯:

你應該正確地閱讀文檔,它的實際需要設置一個成員變量。我給你一個簡單的例子就如何工作的:

var tf:TextField = new TextField(); 
tf.text  = 'Some text.'; 
tf.autoSize = TextFieldAutoSize.LEFT; 
tf.x = (stage.stageWidth - tf.width)/2; 
tf.y = (stage.stageHeight - tf.height)/2; 

另外,您也可以先對齊文本字段並使用TextFieldAutoSize.CENTER保持它的中心對齊。

+0

甜美。 感謝您的回答。我沒有在自動填充選項中看到它。 – jml 2009-12-18 23:45:35

+0

我怎麼錯過了......這就像現場文檔中的第5個房產 – invertedSpear 2009-12-18 23:48:57

+0

hm;實際上,它看起來不是這樣的...我會在另一個答案中發佈我的代碼。 – jml 2009-12-18 23:49:56

0

你可以嘗試使用getCharBoundaries()方法(它返回圍繞指定索引處字符的矩形)。使用它從第一個和最後一個字符獲取矩形,並將寬度設置爲這些矩形的差異。

相當複雜,有一個更好的方法,但如果不是這應該工作。

+0

太棒了! 不;我完全不介意這個......我認爲用flex和flash處理一般規則w/r/t就是你必須接受它的複雜性。 :) – jml 2009-12-18 23:36:30

+0

hm;你能給個例子嗎?這裏是我想要的: \t \t \t t1.x = stage.stageWidth/2; \t \t \t t1.y = stage.stageHeight/2; \t \t \t var st1:String =「我想呈現的一些字符串」; \t \t \t t1.text = st1; \t \t \t t1.width = t1.getCharBoundaries(st1.length)[1]; \t \t \t t1.textColor = 0x000000; \t \t \t t1.cacheAsBitmap = true; \t \t \t addChild(t1); – jml 2009-12-18 23:40:35

1
t1.text = "Some text"; 
t1.width = t1.textWidth + 5; 
t1.height = t1.textHeight + 5; 

爲什麼+ 5?因爲Adobe會在你的東西附近添加一個內部裝訂線。根據文檔,這應該是每邊2px,但它實際上稍微多一點,所以您爲好的度量添加了另一個+1。

+0

我不得不承認tho - textwidth的東西工作得很好,你不需要添加另一個導入。 – jml 2009-12-19 00:11:47