2009-12-18 102 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