2012-10-30 313 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);