所以我有一个简单的应用程序,有一个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 .... 所以我不知道如何工作。 感谢。
答案 0 :(得分:0)
是的,在其他代码中你必须指向a.label,因为你已经创建了:
var a:Button = new Button;
所以你必须参考。
您尝试使用以下组件的组件名称进行引用:
headder1.getChildByName(NAME OF YOUR BUTTON)
但是你把
a.name = NAME OF YOUR BUTTON
告诉我它是否正常。
答案 1 :(得分: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;