中间闪烁垂直文本对齐

时间:2009-10-14 18:36:50

标签: flash actionscript-3

我一直在寻找一种以编程方式设置的方法,默认情况下将动态文本框设置为在框的中间垂直对齐。我发现很难相信没有选择这样做,除非我过于盲目。否则,我怎么能伪造它?

谢谢!

6 个答案:

答案 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;
    }
}