Рендеринг компонента MXML только после завершения actionScript - PullRequest
1 голос
/ 02 апреля 2010

В моем файле mxml я делаю некоторые вычисления в теге script и привязываю их к пользовательскому компоненту.

 <fx:Script>
  <![CDATA[

   [Bindable] public var calc1:Number;
   [Bindable] public var calc2:Number;

            private function init():void {
               calc1 = //calculation;
               calc2 = //calculation;
            }
  ]]>
 </fx:Script>

    <mycomp:Ball compfield1="{calc1}" compfield2="{calc2}"/>

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

Мое решение состояло в том, чтобы создать компонент также в ActionScript сразу после создания calc1 и calc2. Таким образом, я получаю контроль именно тогда, когда он создан

 <fx:Script>
  <![CDATA[

   [Bindable] public var calc1:Number;
   [Bindable] public var calc2:Number;

            private function init():void {
               calc1 = //calculation;
               calc2 = //calculation;

               var Ball:Ball = new Ball(calc1, calc2);
            }
  ]]>
 </fx:Script>

но это создает множество других проблем из-за того, как я настроил компонент.

Есть ли способ, которым я все еще могу использовать mxml для создания компонента, но контролировать, что он <myComp:Ball> создается только после запуска init() и оценки calc1 calc2?

1 Ответ

0 голосов
/ 02 апреля 2010

Попробуйте сначала установить ваши переменные на ноль:

   [Bindable] public var calc1:Number = 0;
   [Bindable] public var calc2:Number = 0;

Затем вызвать функцию creationComplete:

<mycomp:Ball 
   compfield1="{calc1}"
   compfield2="{calc2}"
   creationComplete="init()"/>
...