我一直在寻找一种以编程方式设置的方法,默认情况下将动态文本框设置为在框的中间垂直对齐。我发现很难相信没有选择这样做,除非我过于盲目。否则,我怎么能伪造它?
谢谢!
答案 0 :(得分:8)
var parentContainer:DisplayObjectContainer = ...;
var textField:TextField = ...;
textField.autoSize = TextFieldAutoSize.CENTER;
// set width, height, wordWrap etc if needed
//after setting the text or in the textInput event handler if the
//textField is user editable
textField.y = parentContainer.height * 0.5 - textField.textHeight * 0.5;
答案 1 :(得分:4)
只有 TLFTextField (包fl.text中的类)具有内置属性来设置文本垂直对齐。
检查http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/fl/text/TLFTextField.html
答案 2 :(得分:3)
通常,当我想在原点周围垂直对齐文字时,我会使用此代码。
//Reposition Vertically
//for smaller/larger fonts
field._y = (-1 * field.textHeight) / 4;
答案 3 :(得分:0)
我在我的情况下在时间轴上有我的文本字段,并且它们已根据我的需要调整大小(它们的大小代表对齐区域)并设置为行为:多行。
但我想也可以从ActionsScript创建和调整文本字段。
因此,我使用以下函数更新了我的文本字段:
function fitText(field:TextField, myString:String):void {
var initialHeight:Number = field.height;
field.autoSize = "center";//doesn't really affect the alignment, it just makes the texfield autosizeable.
field.multiline = true;
field.wordWrap = true;
field.text = myString;
field.y += (initialHeight - field.height) / 2;
}
答案 4 :(得分:-1)
var my_text:TextField = new TextField();
addChild(my_text);
my_text.y = (stage.stageHeight/2)-(my_text.height/2);
答案 5 :(得分:-1)
尝试一下,
function centralizeV(TT:TextField) {
var TL:Number;
if (TT.numLines > 1) TL = TT.textHeight / (TT.numLines - 1)
else TL = TT.textHeight;
var deltaL:int = int((TT.height - TT.textHeight) / 2 / TL);
for (var k:int = 0; k < deltaL; k++) {
TT.text = "\n" + TT.text;
}
}