代码之家  ›  专栏  ›  技术社区  ›  Georodin

AS2:使用.createTextField()时出错

  •  0
  • Georodin  · 技术社区  · 8 年前

    我想用数字索引一个简单的二维坐标系。所以我必须添加多个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 回复  |  直到 8 年前
        1
  •  1
  •   tdc    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)