我想用数字索引一个简单的2D坐标系。所以我必须添加多个TextFields。我试着这样:
for (var i = 1;i<4;i++){
display.createTextField("x_"+i, 1, (10*i)+5, 0, 10, 20);
eval("display.x_"+i).text = i;
eval("display.x_"+i).textColor = 0x000000;
}
但是这只输出最后一个数字(在这种情况下 3 ),但为什么呢? 我被禁止使用ActionScript 3,因为我们只使用Macromedia Flash 8。
答案 0 :(得分:1)
您仍然可以在actionscript 2中尝试强类型变量。
此外,您可以将新文本字段存储在变量中,以避免使用eval()
。
另一个问题是你使用常量(1)作为createTextField()
函数的第二个参数。这意味着您将在最后创建一个文本字段:最后一个,这就是您看到3的原因。
由于所有3个文本字段在同一个动画片段中位于相同的深度,因此最近添加的文本字段将替换前一个:
for (var i:Number = 1; i < 4; i++){
var textField:TextField = display.createTextField("x_"+i, i, (10*i)+5, 0, 10, 20);
textField.text = i.toString();
}
注意i
作为第二个参数传递,而不是1
。
此外,如果有帮助,您可以将它们存储在一个数组中供以后使用:
var textFields:Array = [];
for (var i:Number = 1; i < 4; i++){
textFields[i] = display.createTextField("x_"+i, i, (10*i)+5, 0, 10, 20);
textFields[i].text = i;
}
(根据documentation,默认textColor是0x000000)