我有一个名为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]);
)。这是可能的数据没有正确设置在您的代码的前面。