0

有没有一种方法可以集中文本标签,以便无论文本长度如何,它总是在中心爆炸?文本标签显示人们在 Facebook 个人资料中的姓名,但较短的姓名会使文本看起来偏离中心。我要集中的示例:

public var nameFormat = new TextFormat("Arial Rounded MT Bold", 28, 0xFFFFFF, null, null, null, null, TextFormatAlign.CENTER);

var PHPvariablespassedin:Object = LoaderInfo(this.root.loaderInfo).parameters;
nameText.defaultTextFormat = myFormat;
nameText.text = String(PHPvariablespassedin['username']);
interfaceLayer.addChild(nameText);
nameText.x = 186;
nameText.y = 80;
nameText.width = 750;
nameText.wordWrap = true;
nameText.selectable = false;
nameText.embedFonts = true;
nameText.antiAliasType = AntiAliasType.ADVANCED;
nameText.setTextFormat(nameFormat);

谢谢你。

4

2 回答 2

0

试试这个解决方案,我认为它最适合你的情况(通过TextFormat.align属性居中文本以获取文本字段的固定宽度*高度):

    var tf:TextField = new TextField();
    //this is by default is NONE, but we must be sure
    tf.autoSize = TextFieldAutoSize.NONE;

    //the main idea set align property to TextFormatAlign.CENTER
    var format:TextFormat = new TextFormat("Arial", 12, 0x000000, null, null, null, null, null, TextFormatAlign.CENTER);

    //set size to fit the format size (this may be already done in flash IDE for example in your skin)
    tf.height = 22;
    tf.width = 100;
    tf.defaultTextFormat = format;
    tf.text = "small";
于 2013-05-26T11:54:43.217 回答
0

您需要有一个背景对象(可以是透明的),它是您希望 TextField 居中的大小。让我们假设这些事情:

  • 你的 MC 在左上角有一个注册点
  • 背景对象位于 0, 0
  • 您在舞台上有一个 TextField,其实例名称为textField

然后,您可以将其应用为 MovieClip 的基类

公共类 CenteredTextt 扩展 Sprite {

   public var textField:TextField;//将由舞台上的Flash填充
   受保护的var _text:字符串;

   公共函数获取文本():字符串{
      返回_文本;
   }
   公共函数集文本(值:字符串):无效{
      如果(文本字段){
          textField.defaultFormat = textField.getTextFormat();//可能想把这个移到构造函数中,因为它只需要做一次
          textField.autoSize = TextFieldAutoSize.LEFT;
          textField.htmlText = 文本;
          textField.x = 宽度/2 - textField.width/2;
          textField.y = height/2 - textField.height/2;
      }
   }
}
于 2013-05-26T12:28:28.920 回答