我有一个数组可以根据用户变量创建多个文本字段。下面的代码连接到添加文本时触发的函数。从那里它应该找到最宽的文本字段,然后将宽度应用于其余的文本字段,以便它们都是相同的大小。
这是给我问题的代码。我可以使用第二种方式来查看我的语法是否不正确或者是否有更好的方法。
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]
答案 0 :(得分:0)
AS3.0 Array索引是从零开始的,这意味着数组中的第一个元素是[0],第二个元素是[1],依此类推。
所以,您试图访问textArray["b"+ided]
。但是这个语法是Associative arrays
我测试了以下代码。请检查。
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);