1

我有一个基于用户变量创建多个文本字段的数组。下面的代码连接到添加文本时触发的函数。从那里它应该找到最宽的文本字段,然后将宽度应用于其余的文本字段,以便它们都具有相同的大小。

这是给我带来问题的代码。我可以再看看我的语法是否不正确,或者是否有更好的方法来解决这个问题。

for (var ied: int=1; ied>=electoff.electinput.textArray.length; ied++)
{
    trace("one");
    widest=(electoff.electinput.textArray["b"+ied].width>widest)?electoff.electinput.textArray["b"+ied].width:widest;

}
for (i =ied; i<electoff.electinput.textArray.length; ied++)
{
    electoff.electinput.textArray["b"+ied].width = widest;
    trace("two");
}

这是我得到的错误:

TypeError:错误#1010:术语未定义且没有属性。在 NewPlv2_fla::MainTimeline/ajWidth()[NewPlv2_fla.MainTimeline::frame1:650] 在 NewPlv2_fla::MainTimeline/_keys()[NewPlv2_fla.MainTimeline::frame1:774]

4

1 回答 1

0

AS3.0数组的索引是从零开始的,这意味着数组中的第一个元素是 [0],第二个元素是 [1],依此类推。

所以仅供参考你试图访问textArray["b"+ided]。但这种语法是关联数组

我测试了以下代码。请检查。

import flash.text.TextField;
var arr:Array = [];

for(var i:int = 0; i<10; i++)
{
    var tf:TextField = new TextField();
    tf.width = 200 * Math.random();;
    tf.name = "tf" + i;
    tf.height = 100;
    arr.push(tf);
    trace(tf.name + ": " + tf.width);
}

var widest:Number = 0;
for (i=0;i<arr.length;i++)
{
    if(arr[i].width>widest) widest = arr[i].width;
}
trace("widest: " + widest);
于 2013-02-09T00:09:38.030 回答