Flex 4 - Создание состояний и добавление элементов во время выполнения из actionScript - PullRequest
1 голос
/ 28 сентября 2010

Я хочу динамически (во время выполнения) добавлять новые состояния в контейнер и, к этому состоянию, добавлять различные элементы (например, TextInput, Label и т. Д.). Это должно быть сделано из Actionscript, я не использую mxml-файл. Я могу добавлять состояния и изменять свойства или стили для разных элементов, но я не понял, как добавить дочерние элементы для разных состояний.

1 Ответ

4 голосов
/ 28 сентября 2010

Вам нужно будет вручную создать экземпляр класса State и создать для него переопределения.Затем добавьте вновь созданное состояние в массив состояний вашего компонента.

Вот небольшой пример эфирного приложения, которое показывает, как это сделать:

<?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">
    <fx:Script>
        <![CDATA[
            import mx.events.FlexEvent;
            import mx.states.AddChild;
            import mx.states.AddItems;
            import mx.states.SetProperty;
            import mx.states.State;

            protected function createState(event:MouseEvent):void
            {
                var label:Label = new Label();
                label.text = "World!";

                var addLabel:AddItems = new AddItems();
                addLabel.relativeTo = foo;
                addLabel.position = "after";
                addLabel.items = label;

                var helloWorld:State = new State();
                helloWorld.name = "helloWorld";
                helloWorld.overrides = [addLabel];

                states = [helloWorld];
                currentState = "helloWorld";
            }
        ]]>
    </fx:Script>

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

    <s:Label id="foo" text="Hello" />

    <s:Button label="Create new state" click="createState(event)" />
</s:WindowedApplication>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...