如何在AS3中垂直对齐TextField

时间:2011-12-09 22:09:07

标签: flash actionscript-3

我试图在AS3中的Monoline TextField中垂直对齐一些文本。 不确定是否可以使用TextFormat完成,但我不这么认为。

我找了一个解决方案,但没有什么真正有用的。欢迎任何帮助。

谢谢!

4 个答案:

答案 0 :(得分:16)

您无法自动垂直对齐文字。你需要自己做。

这是我的工作代码:

public static function verticalAlignTextField(tf: TextField): void {
    tf.y += Math.round((tf.height - tf.textHeight) / 2);
}

答案 1 :(得分:6)

如果您能够使用fl.text.TLFTextField代替flash.text.TextField(可从Flash Player 10+获得),则可以使用verticalAlign属性垂直居中文本:

import flashx.textLayout.formats.VerticalAlign;
[...]
myTextField.verticalAlign = VerticalAlign.MIDDLE;

答案 2 :(得分:1)

我可以确保“walkietokyo”答案是真正的答案,但应该以正确的方式使用,请参阅adobe文档“(adopts default value if undefined during cascade)”,换句话说,TLFTextFild的某些属性可能会级联verticalAlign像textFormat这样的properety,所以在每个东西之后放置verticalAlign属性来级联其他东西,然后它就会工作。它适用于我:)

答案 3 :(得分:1)

这仅适用于文本为单行的情况。

首先,您必须在每个文本中添加初始分隔线。我在扩展TextField并覆盖“text”函数的新组件中添加了初始断行符。

<?php
$url = "http://www.nigeriatest.com";

// Remove all illegal characters from a url
$url = filter_var($url, FILTER_SANITIZE_URL);

// Validate url
if (!filter_var($url, FILTER_VALIDATE_URL) === false) {
    echo("$url is a valid URL");
} else {
    echo("$url is not a valid URL");
}
?>

然后你需要将格式应用于文本,使用“leading”属性来表示行之间的垂直空间量。

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

我希望这对使用TextField在单行文本中需要垂直对齐的人有所帮助。 : - )