0

我在舞台上有 5 个动态文本字段。它们的实例名称为txtField_1,txtField_2txt_Field_5

如果我想跟踪其中的数据,我会写:

trace(txtField_1.text);
trace(txtField_2.text);
.
.
.
trace(txtField_5.text);

如果我想在 for 循环中执行此操作怎么办?

我正在寻找类似的东西:

for (i=1 ; i<=5 ; i++)
{
   trace(txtField_[i].text);
}
4

3 回答 3

2

您可以使用this[ "variableName" ]语法。

var fields:uint = 5;

for ( var i:uint = 1; i <= fields; i++ ) {
    trace( this[ "txtField_" + i ].text ); //you may need to cast as a TextField to avoid compiler errors
}

this["variableName"]与访问相同this.variableName,但它允许您在变量名中使用变量。

于 2013-05-29T16:08:33.250 回答
0

另一种方法:

private function getTextFields():void{
    for(var i:uint = 0; i < stage.numChildren; i++){
        if(stage.getChildAt(i) is TextField){
            // Whatever needs to be done with the text. e.g. putting it to an array ;);
            trace(TextField(stage.getChildAt(i)).text;
        }
    }
}
于 2013-05-30T04:45:11.387 回答
0

如果您的 TextFields 在一个数组中,您可以这样做。

var _textFields:Array = new Array();
_textFields.push(new TextField());
_textFields.push(new TextField());
_textFields.push(new TextField());
_textFields.push(new TextField());
_textFields.push(new TextField());
_textFields[0].text = "text field 1 text";
_textFields[1].text = "text field 2 text";
_textFields[2].text = "text field 3 text";
_textFields[3].text = "text field 4 text";
_textFields[4].text = "text field 5 text";

然后:

for (var loop:uint=0;loop<_textFields.length;loop++) {
    trace(_textFields[loop].text);
}
于 2013-05-29T15:29:48.787 回答