2012-04-22 51 views
0

我在Flex應用程序中使用FlashBuilder 4.6。我想知道當某個組件(在我的情況下是選項卡式對話框mx:TabNavigator上的一個選項卡)對用戶可見時是否會調用某個函數?我嘗試了creationComplete,當用戶點擊它時,在對話框中調用第二個和第三個選項卡,但是在整個應用程序打開時(即在第一個選項卡可見之前)調用第一個選項卡。Adob​​e Flex:當項目變得可見時調用函數?

謝謝 弗雷德

回答

1

不知道你正在使用哪些特定的容器,但個個都的事件類型的一些變種:這是觸發了暈IndexChangedEvent.CHILD_INDEX_CHANGE

:作爲TabNav,ViewStack等的基礎的容器。火花/空氣等效物應該具有類似的東西。

+0

感謝Mike,我的組件是mx:TabNavigator中的選項卡。當組件變得可見時,是否還有一個通用回調? – 2012-04-22 17:46:10

2

InitializationComplete()是在選項卡(Container)的子項已完全初始化時調用的函數。我通常在容器中重載這個函數,該容器是ViewStack類/子類的子項,以便在上首先設置顯示。您還可以聽節目活動在後續節目中運行代碼。出於某種原因,Flex團隊決定首次展示一個組件時,這不是一場秀。

但是,您的問題可能與未充分利用組件生命週期有關。什麼是完整的上下文?

+0

我有一個帶有4個選項卡的選項卡式對話框。 3個選項卡共享公共數據(它們全部寫入後端的一個配置文件)。我試圖找出共享配置的最佳方式。標籤之間的數據。我將每個選項卡都編寫爲獨立的mxml組件。我目前的做法是讓每個選項卡在其creationComplete處理程序中加載數據,但理想情況下,我希望在第一次查看任何選項卡(即延遲加載)時加載所有3個選項卡的數據。 – 2012-04-23 15:16:43

+0

Ahh現在這更有意義了,這是基於FlexEvent.CONTENT_CREATION_COMPLETE(NavigationContent的子項默認情況下的內容創建策略設置爲'auto')意思是創建父shell,但不是它的子項,直到用戶實際導航爲止。 http://stackoverflow.com/questions/10098642/flex-error-1009-cannot-access-a-property-or-method-of-a-null-object-reference – 2012-04-23 20:10:37

+0

子視圖不應該負責加載他們的自己的數據。這應該由父級提供,所以你可以做更多的事情,比如然後你的setter會有調用invalidateProperties等的數據。注意,commitProperties()可能發生在孩子之前被創建,所以你需要在initializationComplete中再次invalidateProperties。 http://www.developria.com/2009/11/handling-delayed-instantiation.html – 2012-04-24 00:08:33

0

每個UIComponent都有顯示事件,因此您可以監聽它,以便了解ViewStack中的特定內容何時可見。

0

您可以爲其creationcomplete或click事件及其索引添加eventListener,並向其中寫入特定的操作。代碼可以根據要求提供。