2014-02-05 52 views
0

在嘗試解決加載組件和基於此事件觸發事件時遇到的問題時,我遇到了一個問題,我無法在線找到答案。Flex組件初始化和創建順序

以下是參考代碼

<s:WindowedApplication> 

    <s:states> 
     <s:State name="login"/> 
     <s:State name="data"/> 
    </s:states> 

    <s:VGroup id="login" includeIn="login"> 
     <s:HGroup id="loginHGroup"> 
     </s:HGroup> 
    </s:VGroup> 

    <s:VGroup id="data" includeIn="data"> 
     <s:VGroup id="v1"> 
      <s:HGroup id="h11"> 

      </s:HGroup> 
      <s:HGroup id="h12"> 

      </s:HGroup> 
     </s:VGroup> 

     <s:VGroup id="v2"> 
      <s:HGroup id="h21"> 

      </s:HGroup> 
     </s:VGroup> 
    </s:VGroup> 
</s:WindowedApplication > 

樣品現在,如果我想最後的UI組件「數據」狀態被創建後觸發一個事件 - 這件我從火而過? HGroup h12會先創建還是h21? Flex中元素創建的流程是什麼?它遵循DOM原理還是存在其他一些機制?

[請記住,我無法在WindowedAPplication級別激發creationComplete,因爲在創建登錄狀態時會觸發creationComplete]。

+2

最外面的組件將是最後一個觸發它的'creationComplete'事件,但是如果你想知道什麼時候狀態改變完成了,使用[currentStateChange](http://flex.apache.org/asdoc/mx/核心/ UIComponent.html#事件:currentStateChange)。 – RIAstar

+0

我認爲這是相反的方式,最內層的孩子觸發creationComplete並且跟隨容器層次結構。 – Zeus

回答

1

總是外部組件是最後一個觸發creationcomplete事件,因此,您可以在應用程序中添加創建完成事件偵聽器,或者您甚至可以在創建完成後發生的應用程序中添加applicationComplete事件。