0

我有一个文本字段数组,因为数组元素具有不同的宽度大小。我想将它作为没有空格的一行添加到舞台上。那么..如何设置 x 轴?

这是代码:

var _objects:Array = new Array();
var rowCount:uint = 114;
for (var o:uint = 0; o<114; o++)
{
    var label_txt:TextField = drawTxt();
    _objects.push(label_txt);
    label_txt.y = 10
    label_txt.x = (o % rowCount) * (_objects[o].width);// this code gives me 100 px on x for each element.

    addChild(label_txt);
}

更多细节

文本域:

function drawTxt():TextField
{
    var label_txt:TextField = new TextField();
    label_txt.border = true;
    label_txt.antiAliasType = AntiAliasType.ADVANCED;
    label_txt.selectable = false;
    label_txt.multiline = false;
    label_txt.defaultTextFormat = myFormatBold;
    return label_txt;
}

文本数据(xml):

function arrayzeLabelsXML():void
{
    for (var i:int = 0; i < xmlLabelsData.item.length(); i++)
    {
        attributeLabelsContent.push(xmlLabelsData.item[i].@item);
        translateContent.push(xmlLabelsData.item[i].@translate);

        nodeLabelsContent.push(xmlLabelsData.item[i]);
        nodeContent.push(xmlLabelsData.translate[i]);

        _objects[i].text = nodeLabelsContent[i];
        _objects[i].width = _objects[i].textWidth + 20;
        _objects[i].addEventListener(MouseEvent.CLICK,clickHandler);

    }
}

谢谢

4

2 回答 2

0

请注意,TextField该类具有textWidthtextHeight属性。这些是文本的实际宽度/高度,而不是DisplayObject包含文本的宽度/高度。

注意文档说a 的默认大小TextField是 100x100,所以width可能并不总是等于textWidth(我假设这里就是这种情况)。

既然你说你想把它们排成一行,没有空格,我也会使用这样的算法:

var _objects:Array = [];
var rowCount:uint = 114;
var currentX:Number = 0;
for (var o:uint = 0; o<114; o++)
{
    var label_txt:TextField = drawTxt();
    _objects.push(label_txt);
    label_txt.y = 10
    label_txt.x = currentX;
    currentX = currentX + label_txt.textWidth;
    addChild(label_txt);
}
于 2013-06-30T19:00:32.490 回答
0

1.添加文本字段,只设置y值

var _objects:Array = [];
var rowCount:uint = 114;
var currentX:Number = 0;
for (var o:uint = 0; o<rowCount; o++)
{
    var label_txt:TextField = drawTxt();
    _objects.push(label_txt);
    label_txt.y = 10
    addChild(label_txt);
}

2.将文本设置为textField,之所以让textWidth 等于0,是因为您没有为它们设置文本。

arrayzeLabelsXML();

3.设置x值

  var currentX:Number = 0;

  var gap:Number = 0;

   for (var o:uint = 0; o<rowCount; o++)
   {
       var label_txt:TextField = _objects[i] as TextField;
       if ( label_txt) {
           label_txt.x = currentX + gap;//if you find the textField overlap,try to set a bigger gap.
           currentX += label_txt.textWidth;
       }

   }
于 2013-07-01T01:31:26.533 回答