Динамическое создание текстовой области по клику в AS3 - PullRequest
0 голосов
/ 20 июля 2011

Я новичок в AS3 и Flex. Я хочу добавить текстовую область по щелчку или кнопке, например, скажем, если у человека есть несколько адресов, и они хотят добавить больше адресов. Когда пользователь нажимает «добавить адрес», должна появиться новая текстовая область. Я искал решение повсюду, но не повезло

Слушайте, это код, который я пробовал (и это может быть очень неправильно):

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>

Заранее спасибо всем, кто может помочь.

Ответы [ 2 ]

0 голосов
/ 20 июля 2011

Это действительно просто, посмотрите на следующий пример, который я сделал:

<?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>

Просто добавьте прослушиватель событий к элементу Button, используя его свойство click. Затем в обработчике событий создайте объект TextArea и добавьте его в приложение, используя метод addElement().

Вот изображение запускаемого приложения flex:

enter image description here

0 голосов
/ 20 июля 2011

вы смешиваете компоненты на основе flash и flex - потому что вы используете mxml, я предполагаю, что вы используете flex.

пространство имен mx - это «старые» (компоненты pre flex4) - вы можете использовать spark-компоненты и, следовательно, пространство имен s.

<s:Button />

и если вы хотите добавить компонент в ваш mxml динамически, вы используете не addChild (как / flash), а 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...