actionscrip3 textfield sizeing end centering

时间:2011-11-10 09:06:18

标签: actionscript-3

我试图从xml中获取一些单词并将它们放在舞台中央的舞台上。我通过下面的代码实现了这一点。我根据里面的文字自动调整文本字段。但这一次,文字之间出现了空间。我所取得的成就是在它们之间没有空格的情况下使用自动化和相邻的单词。但我无法解决问题。 你能帮我解决一下吗? 提前致谢

                var partsWidth=100;              
                var wordTf = new TextField();
                wordTf.name =thispart;
                wordTf.text =thispart;
                wordTf.width=partsWidth;
                xStartPoint=stage.stageWidth / 2  -  (numberOfWords * partsWidth )/2;
                wordTf.height=partsHeight;
                wordTf.x= xStartPoint + (index * partsWidth) ;
                wordTf.y=150;
                wordTf.background=true;
                wordTf.backgroundColor = 0xe3e3e3;

                wordTf.border = true;
                var myFormat:TextFormat = new TextFormat();
                    myFormat.size = 16;
                    myFormat.align = TextFormatAlign.CENTER;

                wordTf.setTextFormat(myFormat);
                wordTf.autoSize=TextFieldAutoSize.CENTER;
                addChild(wordTf);

1 个答案:

答案 0 :(得分:1)

您使用wordTf.width=partsWidth;明确设置宽度。这将覆盖自动调整大小选项。我会使用以下代码。

var container:Sprite = new Sprite();

var myFormat:TextFormat = new TextFormat();
    myFormat.size = 16;
    myFormat.align = TextFormatAlign.CENTER;

for each( var thispart:String in parts ) 
{
    var wordTf = new TextField();
    wordTf.defaultTextFormat = myFormat;
    wordTf.name = thispart;
    wordTf.text = thispart;
    wordTf.height=partsHeight;
    wordTf.background=true;
    wordTf.backgroundColor = 0xe3e3e3;
    wordTf.border = true;
    wordTf.width = wordTf.textWidth + 4;
    wordTf.y=150;
    wordTf.x = container.width;
    container.addChild(wordTf);
}

container.x = (stage.stageWidth - container.width) / 2;
addChild(container);

将你的单词添加到一个单独的精灵中,添加完所有单词后,将这个精灵添加到舞台并居中。

该行

wordTf.width = wordTf.textWidth + 4;

是重要的一个。设置文本后,flash可以计算文本的宽度。现在设置此文本宽度(+4是文本字段中文本周围的固定填充,您无法修改)作为文本字段的宽度。