2011-07-20 83 views
0

我是AS3和Flex的新手。我想在點擊或按鈕上添加一個文本區域,例如可以說一個人有多個地址,並且他們想要添加更多的地址。當用戶點擊「添加地址」的新文本區應appear.I到處找解決方案,但沒有運氣在AS3中動態創建文本區域oniflick

聽到的是我已經嘗試的代碼(這可能是非常錯誤的):

import mx.controls.Alert; 
import mx.events.CloseEvent; 
private function createTextField(evt:Event):void{ 
    var theTextField:TextField = new TextField(); 
    theTextField.type = TextFieldType.INPUT; 
    theTextField.border = true; 
    theTextField.x = 10; 
    theTextField.y = 10; 
    theTextField.multiline = true; 
    theTextField.wordWrap = true; 
    addChild(theTextField); 
} 

<mx:FormItem> 
<mx:Button label="Add Text Area" click="createTextField(event);"/> 
</mx:FormItem> 

在此先感謝任何可以幫助的人。

回答

0

您正在混合基於Flash和Flex的組件 - 因爲您使用的是mxml,我假設您使用的是flex。

mx命名空間是「舊」(pre flex4組件) - 您可能需要使用spark-components,因此也需要使用s-namespace。

<s:Button /> 

,如果你想將組件添加到你的MXML動態你不使用的addChild(如/閃光),但的addElement()。最後,你沒有創建一個基於閃存的文本字段,但一個柔性基地的TextInput:

<?xml version="1.0" encoding="utf-8"?> 
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" 
        xmlns:mx="library://ns.adobe.com/flex/mx" 
        creationComplete="onCreationComplete(event);" 
        > 
<fx:Declarations> 
    <!-- Place non-visual elements (e.g., services, value objects) here --> 
</fx:Declarations> 

    <fx:Script> 
     <![CDATA[ 

     import spark.components.TextInput; 

     private function onCreationComplete(evt:Event):void 
     { 
      trace("onCreationComplete()"); 
      var txt:TextInput = new TextInput(); 
      grp.addElement(txt); 
     } 

    ]]> 
    </fx:Script> 

    <s:VGroup id="grp"> 
    </s:VGroup> 

</s:WindowedApplication> 
0

它很簡單,看看下面的例子中,我提出:

<?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" 
       width="250" height="250"> 

    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
    </fx:Declarations> 

    <fx:Script> 
     <![CDATA[ 

     import flash.events.Event; 
     import spark.components.TextArea; 

     protected function onButtonClick(e:Event):void 
     { 
      var textArea:TextArea = new TextArea(); 
      textArea.id = "textArea"; 
      addElement(textArea); 

     }// end function 

     ]]> 
    </fx:Script> 

    <s:layout> 
     <s:VerticalLayout></s:VerticalLayout> 
    </s:layout> 

    <s:Button id="button" click="onButtonClick(event)">Add Text Area</s:Button> 

</s:Application> 

只需添加一個事件使用其click屬性收聽Button元素。然後在事件處理程序中創建一個TextArea對象,並使用其addElement()方法將其添加到應用程序中。

這裏是正在運行Flex應用的圖像:

enter image description here