2011-07-20 15 views
0

私はAS3とFlexの初心者です。私は、クリックやボタンにテキスト領域を追加したいと思います。例えば、人が複数のアドレスを持っていて、さらにアドレスを追加したい場合などです。ユーザーが新しいテキスト領域「をアドレスに追加」をクリックするとappear.Iは解決のためにどこでも見てきましたが、運AS3のテキスト領域を動的に作成する

聞くが、私が試してみましたコードではありません(これは非常に間違っている可能性が)必要があります。

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

あなたはmxmlを使用しているので、私はあなたがフレックスを使用していると仮定しているので、フラッシュベースのコンポーネントとフレックスベースのコンポーネントを混在させています。

mxネームスペースは "古い"ものです(フレックス4より前のコンポーネント) - スパークコンポーネント、したがってsネームスペースを使用することができます。

<s:Button /> 

、あなたのMXMLにコンポーネントを追加したい場合は、動的にあなたはにaddChild(AS /フラッシュ)が、をaddElementの()は使用しないでください。最後に、あなたはフラッシュベースのTextFieldを作成するが、フレックス拠点の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()メソッドを使用してアプリケーションに追加します。

enter image description here

:ここ

が実行されているフレックスアプリケーションのイメージです
関連する問題