2013-02-08 58 views
1

我有一個數組可以根據用戶變量生成多個文本字段。下面的代碼連接到添加文本時觸發的函數。從那裏它應該找到最寬的文本字段,然後將寬度應用到文本字段的其餘部分,以便它們都具有相同的大小。查找AS3中多個文本字段的最大寬度

這是給我的問題的代碼。我可以再看一看,看看我的語法是否不正確,或者如果有更好的方法來解決這個問題。

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: Error #1010: A term is undefined and has no properties. at NewPlv2_fla::MainTimeline/ajWidth()[NewPlv2_fla.MainTimeline::frame1:650] at NewPlv2_fla::MainTimeline/_keys()[NewPlv2_fla.MainTimeline::frame1:774]

+0

啊感謝編輯,生病會拋出類型的錯誤,我從現在可能會遇到的問題。 – Tropzilla 2013-02-08 23:59:25

回答

0

Array AS3.0被索引從零開始,這意味着,在陣列中的第一個元素是[0],第二個元素是[1],依此類推。

so FYI you trying to access 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); 
+0

非常酷的腳本,我改變了它與我的代碼一起工作。它得到最廣泛的;但是在第二次調用函數後,寬度變爲零。 – Tropzilla 2013-02-09 00:28:48