获取舞台上的TextArea(通过ID、Name获取Child)

发布于 12-06 07:13 字数 296 浏览 0 评论 0原文

我试图在 FlashBuilder 上获取舞台上的 7 个 TextArea,它们的 id 均为“DES1”、“DES2”、“DES3”...并且名称相同“DES1”、“DES2”, “Desc3”...,但是当我尝试获取它时,我收到一个空对象的错误...

for(var i:int = 0;i<7;i++)
{
   trace((stage.getChildByName("Desc"+(i+1))as TextArea).x);
}

我搜索了网络,但没有找到“getChildByID”的任何方法

I´m trying to get the 7 TextAreas on the stage on FlashBuilder,all of them have the id as "Desc1","Desc2","Desc3"... and the names are the same "Desc1","Desc2","Desc3"..., but when i try to get it,i get a error of a null object...

for(var i:int = 0;i<7;i++)
{
   trace((stage.getChildByName("Desc"+(i+1))as TextArea).x);
}

I searched the web and dont find either any method of "getChildByID"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

童话里做英雄2024-12-13 07:13:42

Flex ID 不适用于 getChildByName()。 getChildByName() 旨在处理 Adob​​e Flash CS 中嵌套元素的 id。

Flex id 是类成员的显式声明,其名称等于 id。
由于动作脚本语言中缺乏宏,您无法自动创建此类控件列表。

您可以手动创建文本区域的 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>

Flex IDs don't work with getChildByName(). getChildByName() is designed to work with ids of nested elements in Adobe Flash CS.

An flex id is an explicit declaration of a class member with name which is equal to the id.
Due to the lack of macro in the actionscript laguage you cannot automate the creation of such lists of controls.

You can manually create an Vector or an Array of the text areas and use it in other part of your code to automatically iterate over your 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)
{
  ....
}

Or you can create a flex Array:

<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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文