【问题标题】:AS2: error using .createTextField()AS2:使用 .createTextField() 时出错
【发布时间】:2016-06-05 08:13:51
【问题描述】:

我想用数字索引一个简单的二维坐标系。所以我必须添加多个文本字段。我试过这样:

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。

【问题讨论】:

    标签: flash actionscript actionscript-2


    【解决方案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)

    【讨论】:

    • 这是正确的。此外,最好将动态创建的对象存储在数组中,因为在 AS3 中,在循环中创建对象时可能会遇到问题。 for(var zz:int =0;zz&lt;objCount;zz++){ var myDynamicObject:DynamicObjectType = new DynamicObject([params]); addChild(myDynamicObject); `} 这通常会结束在你的显示列表中放置一个对象(如果有的话),因为每个循环都会重置该对象。相反,您想将对象添加到数组中。我知道您在 AS2 中,但这仍然是一种很好的做法,因为您可以轻松地在 objs 上调用 funcs
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 2022-08-03
    • 2014-06-15
    • 2018-04-19
    • 1970-01-01
    相关资源
    最近更新 更多