Viewstack с компонентами; ждать загрузки компонента - PullRequest
0 голосов
/ 15 декабря 2011

У меня есть видовой стек с несколькими компонентами.Эти компоненты должны выполнять функцию с параметрами, поступающими от других компонентов.Поэтому другой компонент не может быть загружен мной напрямую.

Есть ли способ загрузить компонент через AS3 с помощью функции?

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 15 декабря 2011

подробно описывает, как добавить дочерние компоненты во время выполнения.Если вы указали свои дочерние компоненты в MXML, у вас есть несколько вариантов создания:

  • use creationPolicy=auto - механизм решает, когда создаются компоненты
  • use creationPolicy=all - все создается при запуске
  • , используйте creationPolicy=auto или none, но создавайте дочерние экземпляры вручную, когда это необходимо.См .: создание отложенных компонентов

Поскольку auto не работает для вас, я бы попробовал all.Только если это создаст слишком много слишком рано, я углублюсь в отложенные компоненты.

0 голосов
/ 15 декабря 2011

Любой компонент MXML может быть создан с помощью AS3. Вы можете использовать событие creationComplete для вызова метода, который создает ваши компоненты и добавляет их в список отображения. См. Пример ниже, который создает кнопку и HGroup в AS3, затем делает кнопку дочерним элементом HGroup, а Hgroup - дочерним элементом панели.

    <s:Panel creationComplete="createButtonComponent(event)">
    <fx:Script>
    <![CDATA[
        import mx.collections.ArrayCollection;
        import mx.controls.Button;
        import mx.events.FlexEvent;

        import spark.components.HGroup;


        protected function buttonClickHandler(event:MouseEvent):void
        {
            // Do something
        }

        protected function createButtonComponent(event:FlexEvent):void
        {
            var group:HGroup = new HGroup();
            group.percentHeight = 20;
            group.percentWidth = 100;

            var myButton:Button = new Button();
            myButton.label = 'My Button';
            myButton.addEventListener(MouseEvent.CLICK, buttonClickHandler);

            group.addElement(myButton);
            this.addElement(group);
        }

    ]]>
    </fx:Script>
    </s:Panel>

Этот код выше похож на следующий MXML:

<s:Panel creationComplete="createButtonComponent(event)">
  <s:HGroup id="group" height="20%" width="100%">
    <mx:Button id="myButton" label="My Button" click="buttonClickHandler" />
  </s:HGroup>
</s:Panel>
...