AS2:使用.createTextField()时出错

时间:2016-02-23 13:07:36

标签: flash actionscript actionscript-2

我想用数字索引一个简单的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。

1 个答案:

答案 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)