2010-04-02 3 views
1

Dans mon fichier mxml, je fais des calculs dans la balise de script et je les lie à un composant personnalisé.Rendu du composant MXML uniquement après la fin de l'actionScript

<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}"/> 

Le problème est que le composant mxml est créé avant l'exécution de l'actioncript. Donc, lorsque le composant est créé, il n'obtient pas calc1 et calc2 et il échoue à partir de ce point. Je sais que la liaison se produit après cela, mais le composant et ses fonctions ont déjà démarré et ont fonctionné avec les valeurs initiales null ou 0.

Ma solution était de créer le composant également en actionscript juste après que calc1 et calc2 ont été créés. De cette façon, j'arrive à contrôler avec précision quand il est créé

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

mais cela crée toutes sortes d'autres problèmes en raison de la façon dont je l'ai mis en place le composant.

Est-il possible que je peux encore utiliser MXML pour créer le composant, mais contrôler que le <myComp:Ball> est créé seulement après init() est géré et évalué calc1calc2?

Répondre

0

Essayez le réglage de vos vars à zéro les valeurs premières:

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

appeler ensuite la fonction sur creationComplete:

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

Merci, va essayer et revenir. – basicblock

+0

N'a pas vraiment résolu mon problème, mais je suppose qu'il a quelque chose à voir avec mon code, donc je choisis cela car il semble être une réponse valide. Merci pour l'aide. – basicblock

Questions connexes