将按钮添加到动态创建的面板

时间:2011-08-06 18:35:16

标签: flex

我根据从XML文件中获取的信息动态创建面板,但我在向这些面板添加按钮时遇到问题。这些buttoms也是基于从XML文件中获取的信息创建的。问题似乎在于我给面板一个Id名称的方式。你能给予的任何帮助都会很棒。

private function sidebar():void{
            for each (value in xmlObj.SPORT.@Event)
            {
                var myInstance4:spark.components.Panel = new spark.components.Panel();
                myInstance4.title = value;
                myInstance4.id = value;
                sidebarbox.addChild(myInstance4);
                Alert.show(myInstance4.id)
                for each (value2 in xmlObj.SPORT.MatchResult.COMPETITION.@Comp)
                {
                    var myInstance3:spark.components.Button = new spark.components.Button();
                    myInstance3.label = value2;
                    myInstance3.addEventListener("click",changeIt);
                    myInstance3.id=value2;      
            //      value.addChild(myInstance3);
                //  value.addElement(myInstance3);
                }

            }
        }

1 个答案:

答案 0 :(得分:0)

使用myInstance4.addElement添加孩子。

您已经通过调用

创建了一个实例
var myInstance4:spark.components.Panel = new spark.components.Panel();

如果您在MXML中创建了这些元素,那么,在ActionScript中使用它时,您将使用id属性唯一标识每个对象。例如

<s:Button id="myButton" label="My Button" />

protected function creationCompleteEvent(event:FlexEvent):void
{
     myButton.doSomething();
}

,但

如果您使用ActionScript创建它,只要您有对该对象的引用,就不需要设置id属性来访问它。

protected function creationCompleteEvent(event:FlexEvent):void
{
   var myNewButton:Button = new Button();
   //You do not need to set the id here
   myNewButton.doWhatEver();
}