我试图在FlashBuilder的舞台上获得7个TextAreas,所有这些都具有ID为“Desc1”,“Desc2”,“Desc3”......并且名称相同“Desc1”,“ Desc2“,”Desc3“......,但是当我试图得到它时,我得到一个空对象的错误......
for(var i:int = 0;i<7;i++)
{
trace((stage.getChildByName("Desc"+(i+1))as TextArea).x);
}
我搜索了网页,但没有找到任何“getChildByID”方法
答案 0 :(得分:0)
Flex ID不适用于getChildByName()。 getChildByName()用于处理Adobe Flash CS中嵌套元素的ID。
flex id是类成员的显式声明,其名称等于id。 由于actionscript laguage中缺少宏,因此无法自动创建此类控件列表。
您可以手动创建文本区域的Vector或数组,并在代码的其他部分使用它来自动迭代TextAreas:
var text_areas:Vector.<TextArea> = new Vector.<TextArea>();
text_areas.push(Desc1, Desc2, Desc3);
// or you can do this
var text_areas2:Array = [];
text_areas["Desc1"] = Desc1;
text_areas["Desc2"] = Desc2;
text_areas["Desc3"] = Desc3;
// Now you can iterate over the text areas
for each (var a_text_area:TextArea in text_areas)
{
....
}
或者你可以创建一个flex数组:
<fx:Array id="textAreas">
<s:TextArea id="textArea1"/>
<s:TextArea id="textArea2" x="397" y="0"/>
<s:TextArea id="textArea3" x="201" y="1"/>
</fx:Array>