在 for 循环中使用 AS3 更改文本 - 适用于第一个,其他人则不适用于



我有一个名为Tab的影片剪辑,它有两个文本字段:名为toptxt和bottomtxt。当我在for循环中创建Tab的新实例并更改文本时,只更改第一个实例的文本。其余部分为影片剪辑中的默认文本。

下面是我使用的代码:
for(var i = 0; i < 5; i++){
    var newTab = new Tab();
    newTab.toptxt.text = nameArray[i]; //nameArray is fine
    trace(newTab.toptxt.text); //returns expected value, textfield isn't
    newTab.bottomtxt.text = jobs[i];
    bottom.addChild(newTab); //bottom is a class var.
    newTab.x = i * (newTab.width + 3);
}

即使我将nameArray[I]更改为"Test",也只有第一个有效。

如果不在for循环中执行,则不会出现此问题,但是我想在for循环中执行。

下面是问题的截图:https://i.stack.imgur.com/ByvUq.png

var newTab = new Tab();的声明拉出for循环,因此您的代码看起来像这样:

 var newTab:Tab;
 for(var i:int = 0; i < 5; i++){
    newTab = new Tab();
    newTab.toptxt.text = nameArray[i]; //nameArray is fine
    trace(newTab.toptxt.text); //returns expected value, textfield isn't
    newTab.bottomtxt.text = jobs[i];
    bottom.addChild(newTab); //bottom is a class var.
    newTab.x = i * (newTab.width + 3);
}

Actionscript是变得混乱,当你创建一个实例,并分配newTab作为指针给它,而不是创建一个指针或引用最初,然后创建新的实例,并将它们添加到你的displayList。

同样,跟踪nameArray[i]的输出并确认这些值是正确的(即trace(nameArray[i]);)。这是可能的数据没有正确设置在您的代码的前面。

最新更新