【问题标题】:AS3 how to get access to a inruntime created element by his id?AS3 如何通过他的 id 访问运行时创建的元素?
【发布时间】:2013-07-21 19:45:21
【问题描述】:

所以我有一个简单的应用程序,它有一个 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.... 所以我不知道如何工作。 谢谢。

【问题讨论】:

    标签: actionscript-3 flash-builder mxml


    【解决方案1】:

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

    var a:Button = new Button;
    

    所以你必须参考。

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

    headder1.getChildByName(NAME OF YOUR BUTTON)
    

    但是你放了

    a.name = NAME OF YOUR BUTTON
    

    告诉我是否可以。

    【讨论】:

      【解决方案2】:

      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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-11-08
        • 2022-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-30
        • 2015-01-06
        相关资源
        最近更新 更多