如何自动设置TextField()的宽度

时间:2009-12-18 23:20:56

标签: flex actionscript-3 text

我正在尝试根据我设置的字符串内容设置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 个答案:

答案 0 :(得分: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将其保持在中心位置。

答案 1 :(得分:1)

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

为什么+ 5?因为Adobe糟透了并且在你的东西周围添加了一个内部装订线。根据文档,这应该是每边2px,但它实际上稍微多了,所以你添加另一个+1以获得良好的衡量标准。

答案 2 :(得分:0)

你可以尝试使用getCharBoundaries()方法(它返回一个围绕指定索引处的字符的矩形)。使用它从第一个和最后一个字符中获取矩形,并将宽度设置为这些矩形的差异。

相当复杂,必须有更好的方法,但如果没有,这应该有效。