在flex中在运行时删除组容器

时间:2011-09-25 13:59:45

标签: flex actionscript flash-builder

我正在尝试在运行时在预定义的组中创建一些组。我可以组团,代码工作正常。现在我在运行时创建的每个组中添加了两个按钮。现在的问题是按钮之一是x。按钮的属性应该是当我点击它时它应该删除它所在的特定组。请查看代码并告诉我应该添加哪些内容。

            public var n:Number = 0;

        protected function remover (event:MouseEvent):void
        {
        }

        protected function settings(g:Group):void
        {
            ((DisplayObject)(g)).width = "200";
            ((DisplayObject)(g)).height = "140";
            ((DisplayObject)(g)).x = "200" ;
            ((DisplayObject)(g)).y = "200";
            var s:String;

            s = "NewGroup"+ "X"+ n.toString;
            var mybutton1:Button = new Button();
            mybutton1.id = s;
            mybutton1.label ="X";
            mybutton1.addEventListener(MouseEvent.CLICK, remover);
            g.addElement(mybutton1);
    //      setting1(mybutton1);
            n++;
        }

        public function addGroup(event:MouseEvent): void
        {
            var s:String;
            n = n+1;
            s = "NewGroup"+ "_"+ n.toString;
            var myGroup:Group = new Group();
            myGroup.id = s;
            main.addElement(myGroup);
        //  setElementIndex(myGroup, n);
            settings(myGroup); 
        }

    ]]>
</fx:Script>

<s:Button x="422" id="wow"   y="139" label="Add Group"  click="addGroup(event)"/>

<s:HGroup id="main" x="6" y="168" width="750" height="490">
</s:HGroup>

2 个答案:

答案 0 :(得分:2)

这应该有效:

protected function remover(event:MouseEvent):void
{
  main.removeElement(Group(Button(event.currentTarget).parent));
}

答案 1 :(得分:1)

您需要使用DataGroup来创建ItemRenderers(您的组),其中包含一个按钮。一切都基于您管理的数据集合(如ArrayCollection)。它使一切变得更容易,因为如果将ArrayCollection绑定到DataGroup的dataProvider属性并从集合中删除项目,DataGroup将自动更新并删除显示项目。

相关问题