Как выровнять TextField в AS3 по вертикали - PullRequest
11 голосов
/ 10 декабря 2011

Я пытаюсь выровнять текст по вертикали в текстовом поле Monoline в AS3.Не уверен, что это можно сделать с помощью TextFormat, но я так не думаю.

Я искал решение, но ничего действительно полезногоЛюбая помощь приветствуется.

Спасибо!

Ответы [ 4 ]

16 голосов
/ 10 декабря 2011

Вы не можете автоматически выравнивать текст по вертикали. Вы должны сделать это самостоятельно.

Вот мой рабочий код:

public static function verticalAlignTextField(tf: TextField): void {
    tf.y += Math.round((tf.height - tf.textHeight) / 2);
}
6 голосов
/ 10 декабря 2011

Если вы можете использовать fl.text.TLFTextField вместо flash.text.TextField (доступно из Flash Player 10+), вы можете центрировать текст по вертикали, используя свойство verticalAlign:

import flashx.textLayout.formats.VerticalAlign;
[...]
myTextField.verticalAlign = VerticalAlign.MIDDLE;
1 голос
/ 08 июня 2015

Это прекрасно работает только в том случае, если текст в одной строке.

Сначала вы должны добавить начальную строку разрыва в каждом тексте. Я сделал это в новом компоненте, расширяющем TextField и переопределяющем функцию «text», добавляя символ начальной строки разрыва.

import flash.text.TextField;

public class MyTextField extends TextField
{
    public function MyTextField()
    {
        super();
    }

    public override function set text(value:String):void
    {
        value = "\n" + value;

        super.text = value;
    }
}

Затем вам нужно применить форматирование к тексту, используя свойство "lead", которое представляет величину вертикального промежутка между строками.

myTextFormat = new TextFormat();

// This is the existent horizontal align
myTextFormat.align = TextFormatAlign.CENTER; 

// This is my simulated vertical align. Remember that the first character 
// is always a break line. In most cases it will be a negative value...
myTextFormat.leading = -22;   

var myTextField:MyTextField = new MyTextField();
myTextField.text = "Hello";
myTextField.setTextFormat(myTextFormat);

Надеюсь, это поможет тем, кому нужно выравнивание по вертикали в однострочном тексте с использованием TextField. : -)

1 голос
/ 07 ноября 2013

Я могу заверить, что ответ " walkietokyo " является верным, но его следует использовать надлежащим образом, см. Документацию Adobe "( принимает значение по умолчанию, если оно не определено во время каскада )" другими словами, некоторые свойства TLFTextFild могут каскадировать свойство verticalAlign, например textFormat, поэтому для каждой из них нужно установить свойство verticalAlign, чтобы оно работало каскадно. у меня это работает :) 1005 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...