2012-10-30 165 views
2

我对Flex SDK有一个非常基本的问题,但是我没有找到任何资源来解决我的问题,并且诚实地不知道是否有可能做到我想要的。所以这里是我的问题:在Flex中动态创建按钮

我用Adobe Flex Builder 4.6创建了Flex项目。然后我在主MXML文件中放置了按钮(假设它的编号为btn1)。我想直接从主MXML文件的脚本部分创建第二个按钮。具体而言,我想从btn1的按钮点击处理程序创建它。

这里是我的MXML代码(这是项目唯一的文件):

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" 
       xmlns:mx="library://ns.adobe.com/flex/mx" 
       minWidth="955" minHeight="600"> 

    <fx:Script> 
     <![CDATA[ 
      protected function btn1_clickHandler(event:MouseEvent):void 
      { 
       var btn2:Button = new Button(); 
       btn2.label = "Hello"; 
       btn2.x = 50; 
       btn2.y = 50; 
      } 
     ]]> 
    </fx:Script> 


    <fx:Declarations> 
     <!-- Non visual elements --> 
    </fx:Declarations> 

    <s:Button id="btn1" 
       x="10" y="10" 
       label="Кнопка" 
       click="btn1_clickHandler(event)"/> 

</s:Application> 

但是当我点击btn1 - 什么也没有发生。我可能不了解Flex编程范例中的某些内容 - 请为我指出。

+0

addChild()该按钮,至少。 – Vesper

+2

请勿使用'addChild()'。使用**'addElement()'**。 – Florent

+0

@Florent哦,谢谢你的作品!我如何将你的评论标记为我的问题的答案? – GuardianX

回答

2

你必须添加按钮到视图使用addElement()

var btn2:Button = new Button(); 
btn2.label = "Hello"; 
btn2.x = 50; 
btn2.y = 50; 

addElement(btn2);