0

配列要素の幅のサイズが異なるため、テキストフィールド配列があります.スペースなしの1行としてステージに追加したい..だから..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クラスにはtextWidthおよびtextHeightプロパティがあることに注意してください。これらは、テキストを含む の幅/高さではなく、テキストの実際の幅/高さ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 に答える