我正在尝试根据我设置的字符串内容设置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
答案 0 :(得分:3)
修改强>
您应该正确阅读文档,它是实际需要设置的成员变量。我会给你一个关于它是如何工作的快速例子:
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()方法(它返回一个围绕指定索引处的字符的矩形)。使用它从第一个和最后一个字符中获取矩形,并将宽度设置为这些矩形的差异。
相当复杂,必须有更好的方法,但如果没有,这应该有效。