2010-04-02 49 views
1

在我的mxml文件中,我正在腳本標記中進行一些計算,並將它們綁定到一個自定義組件。只有在動作完成後才渲染MXML組件

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

問題是在運行actionscript之前正在創建mxml組件。所以當組件創建時,它實際上並沒有得到calc1calc2,並且從那一點起它就失敗了。我知道綁定發生在那之後,但組件及其功能已經開始並且以null或0初始值運行。

我的解決方案是在calc1calc2已創建後,在actionscript中創建組件。這樣,我得到,當它的創建

<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()運行和calc1calc2評估?

回答

0

試試你的增值經銷商設置爲零值第一:

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

然後調用creationComplete功能:

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

謝謝,會嘗試一下,並取回。 – basicblock 2010-04-02 14:51:42

+0

沒有真正解決我的問題,但我猜它與我的代碼有關,所以我選擇這個,因爲它看起來像一個有效的答案。謝謝您的幫助。 – basicblock 2010-04-03 05:03:09

相關問題