1

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

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

<s:Hgroup id="headder1" height="25"/>

在我的“表单创建完成”中:

var a:Button = new Button;
a.id='button1';
a.label = 'hello';
headder1.addElement(a);

因此,当我尝试在任何其他代码中执行以下操作时:

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

我得到一个错误。导致没有 button1 可访问。即使我调试代码,这个...下也没有button1,而不是headder1 ....所以我不知道如何工作。谢谢。

4

2 回答 2

0

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;
于 2013-07-22T23:03:05.713 回答
0

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

var a:Button = new Button;

所以你必须参考。

您尝试通过以下方式引用组件的名称:

headder1.getChildByName(NAME OF YOUR BUTTON)

但你把

a.name = NAME OF YOUR BUTTON

告诉我是否可以。

于 2013-07-22T22:20:24.420 回答