2013-07-25 15 views
0

我擡頭看我如何做到這一點,似乎沒有任何工作。 試圖在循環中使用我來引用我的所有文本字段並設置它們。 假設我的文本框被命名爲textField0,textField1的,文字欄等 喜歡的東西:引用for循環中的文本字段

for(var i:int = 0; i < numberOfFields; i++) 
{ 
    parent.child.getChildByName("textField" + i).text = stringArray[i]; 
} 

任何幫助將不勝感激 感謝

+0

你有當您執行或僅不起作用的錯誤:

假設同一層次,我可能會這樣重寫一遍? –

回答

0

讓我們假設你的層次結構看起來像這樣

0: root:MainTimeline ¬ 
    0: Background:Shape 
    1: textField1:TextField 
    2: textField2:TextField 
    3: myClip:MovieClip 
    4: textField3:TextField 

我們在列表中有一些「噪音」,所以對所有這些的直接迭代可能不是最好的方法。我們可以放置一個測試對象名稱或其對象類型的if語句,或者我們可以爲每個這些TextField創建一個手動指針列表。在這種情況下,每個文本字段都可以假設存在於任何嵌套容器中。這取決於你設置的內容。

在你上面給的例子,你從字面上引用所謂的「孩子」的對象,這意味着您的層次結構可能是這樣的......

0: root:MainTimeline ¬ 
    0: child:MovieClip ¬ 
     0: textField1:TextField 
     1: textField2:TextField 
     2: textField3:TextField 
    1: myClip:MovieClip // <- assuming that this is the class your code is coming from 

所以,你的邏輯是,我們上升到隱含的this引用(this.parent == parent),然後下到我們的容器名爲child,並遍歷其子(注意:我懷疑這不是這種情況,並且其失敗的部分原因)。

for (var i:int = 0; i < parent.child.numChildren; i++) { 
    var txt:TextField = parent.child.getChildAt(i); 
    txt.text = stringArray[i]; 
} 
+0

有趣的是,我還沒有使用getChildAt()。我仍然真的需要使用getChildByName(),因爲我在同一級別上有很多文本字段。我得到了1118:隱式強制使用靜態類型的值flash.display:將DisplayObject轉換爲可能不相關的類型flash.text:使用getChildByName()時的TextField。爲什麼會這樣? – Adamund

+0

在設置它之前創建TextField。謝謝! – Adamund