Actionscript 3 AS3如何通过id访问inruntime创建的元素?

Actionscript 3 AS3如何通过id访问inruntime创建的元素?,actionscript-3,flash-builder,mxml,Actionscript 3,Flash Builder,Mxml,所以我有一个简单的应用程序,它有一个hgroup,我向其中添加了一个元素。但是当我使用this.newobject.something时,我无法访问该对象 在我的mxml相关代码中,我有: <s:Hgroup id="headder1" height="25"/> 因此,当我尝试在任何其他代码中执行以下操作时: var e:String; e=this.button1.label 我犯了一个错误。原因:没有可访问的按钮1。即使我调试代码,下面也没有按钮1。。。。而不是在头1下。。

所以我有一个简单的应用程序,它有一个hgroup,我向其中添加了一个元素。但是当我使用this.newobject.something时,我无法访问该对象

在我的mxml相关代码中,我有:

<s:Hgroup id="headder1" height="25"/>
因此,当我尝试在任何其他代码中执行以下操作时:

var e:String;
e=this.button1.label
我犯了一个错误。原因:没有可访问的按钮1。即使我调试代码,下面也没有按钮1。。。。而不是在头1下。。。。 所以我不知道如何解决这个问题。
谢谢。

是的,在其他代码段中,您必须指向.label,因为您已经创建了:

var a:Button = new Button;
所以你必须提到这一点

您尝试使用以下内容按组件名称引用:

headder1.getChildByName(NAME OF YOUR BUTTON)
但是你把

a.name = NAME OF YOUR BUTTON
告诉我是否可以。

id不是典型意义上的UIComponent属性。无法在ActionScript中设置它。在MXML中设置ID时,它会在编译时使用该ID在生成的AS3类中创建一个公共变量,这远远早于它实际运行的时间。MXML实际上并不在运行时运行。相反,编译器使用MXML在编译时生成ActionScript类,并在运行时运行

如果我没记错的话,如果你在另一个问题中得到这个对象并检查它的id,它不是你设置的

因此,您需要在AS3中保存对按钮的引用,或者设置其名称,循环遍历其父级,然后以这种方式获取对象

因此,请改为:

private var button1:Button;
private function formCreationComplete(e:Event ):void {
    this.button1 = new Button;
    this.button1.id='button1';
    this.button1.label = 'hello';
    headder1.addElement( this.button1 );
}
之后,您可以执行以下操作:

var e:String;
e = this.button1.label;
var e:String;
e = this.button1.label;