Flex 4.5在运行时将多个组件添加到容器中

时间:2012-03-23 01:47:06

标签: actionscript-3 flex flex4.5 children

我希望能够将多个孩子添加到群组中。

我想在“qItems”

中立即添加所有这些内容
 <s:HGroup width="100%" height="100%">
  <s:Group width="100" height="100%">
   <s:TextInput width="100%" editable="false"/>
  </s:Group>
  <s:Group width="100%" height="100%">
   <s:TextInput width="100%"/>
  </s:Group>
 </s:HGroup>

我只能通过一个孩子

<fx:Script>
  <![CDATA[

protected function addNewGroup():void
{
 var hg:HGroup = new HGroup();
 hg.width=100 + "%";
 hg.height=100 + "%";

 qItems.addElement(hg);
}

  ]]>
</fx:Script>

<s:Button label="Add Item" click="addNewGroup()"/>
<s:VGroup id="qItems" width="100%" height="22"/>

我不知道如何一次添加多个项目。

由于

更新

到目前为止我有这个......寻找更好的方法

public var hg:HGroup;
        public var g1:Group;
        public var g2:Group;
        public var g3:Group;
        public var g4:Group;
        public var g5:Group;
        public var g6:Group;
        public var ti1:TextInput;
        public var ti2:TextInput;
        public var ti3:TextInput;
        public var ti4:TextInput;
        public var ti5:TextInput;
        public var ti6:TextInput;

        protected function addNewGroup():void
        {
            hg = new HGroup();
            hg.width=100 + "%";
            hg.height=22;

            g1 = new Group();
            g1.width=100;
            g1.height=100 + "%";
            ti1 = new TextInput();
            ti1.width=100 + "%";
            ti1.editable=false;

            g2 = new Group();
            g2.width=100 + "%";
            g2.height=100 + "%";
            ti2 = new TextInput();
            ti2.width=100 + "%";

            g3 = new Group();
            g3.width=100;
            g3.height=100 + "%";            
            ti3 = new TextInput();
            ti3.width=100 + "%";

            g4 = new Group();
            g4.width=100;
            g4.height=100 + "%";            
            ti4 = new TextInput();
            ti4.width=100 + "%";

            g5 = new Group();
            g5.width=100;
            g5.height=100 + "%";        
            ti5 = new TextInput();
            ti5.width=100 + "%";

            g6 = new Group();
            g6.width=100;
            g6.height=100 + "%";            
            ti6 = new TextInput();
            ti6.width=100 + "%";

            qItems.addElement(hg);
            hg.addElement(g1);
            g1.addElement(ti1);
            hg.addElement(g2);
            g2.addElement(ti2);
            hg.addElement(g3);
            g3.addElement(ti3);
            hg.addElement(g4);
            g4.addElement(ti4);
            hg.addElement(g5);
            g5.addElement(ti5);
            hg.addElement(g6);
            g6.addElement(ti6);

1 个答案:

答案 0 :(得分:1)

我采取的方法是将对象添加到数组集合中,然后通过该集合为每个循环执行a,并从循环中向父容器执行add元素。

例如:

for each (var visualElement:Object in CollectionOfObjects){ 
    var newWrappingFormItem:WrappingFormItem = new WrappingFormItem();
    newWrappingFormItem.maxLabelWidth = 100;
    newWrappingFormItem.wrapLabel = true;    
    newWrappingFormItem.label = "Label Name";
    newWrappingFormItem.addElement(visualElement);
    parentContainer.addChild(newWrappingFormItem);
}

此示例使用包装表单Item,但您可以使用相同的逻辑为其他组件元素创建。