1

我正在尝试在 FlashBuilder 的舞台上获取 7 个 TextArea,它们的 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”方法

4

1 回答 1

0

Flex ID 不适用于 getChildByName()。getChildByName() 旨在处理 Adob​​e 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>
于 2011-11-06T12:30:22.583 回答