AS2:使用 .createTextField() 时出错

AS2: error using .createTextField()

我想用数字索引一个简单的二维坐标系。所以我必须添加多个 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。

您仍然可以尝试在 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)