2010-01-05 18 views
0

我使用Flex中

ContentContainer.addChild(c); 

哪裏ContentContainer是我的畫布對象和C添加的DisplayObject到畫布添加動態的DisplayObject是我在運行時創建的DisplayObject

一些的DisplayObject也在DisplayObject添加到Canvas之前,在運行時添加了自己的子項。然後,我需要遍歷ContentContainer的所有子項,但是第一次執行此操作時,它說ContentContainer沒有志ldren(即ContentContainer.numChildren = 0)。如果我再次這樣做,那麼它很好,並返回正確數量的孩子。

有什麼我需要打電話來讓ContentContainer重新計算它有多少個孩子?

+0

你能後顯示出代碼中numChildren的== 0?它是從addChild()或其他路徑的相同方法調用的嗎? – 2010-01-05 16:28:12

+0

我看到numChildren == 0在Flex Builder的調試器和(搞砸了我的那一點)當我做 (var i:uint = 0; i Addsy 2010-01-05 16:35:38

+0

您可以發佈您的完整代碼嗎?兒童的加入和迭代孩子在不同的功能中處理?也許他們以錯誤的順序被調用。 – quoo 2010-01-05 16:42:47

回答

0

我使用callLater做了一個類似的任務,以便在重新計算某些任務之前等待拖拉完成。這可能適合你。

public function myFunct():void{ 
    //do your adding 
    callLater(
     function():void{ 
      //do your loop 
     } 
    ) 
} 
+0

嗨,謝謝你。不幸的是,我不認爲計時是這裏的問題,因爲一旦項目被添加,通過它們的迭代不會發生,直到用戶單擊按鈕。不管我多長時間在加載項目和點擊按鈕之間等待,我仍然遇到同樣的問題 – Addsy 2010-01-05 16:36:52

2

正如邁克爾指出這將有助於看到代碼,但你可能要考慮的事件概述關於創建策略部分的文檔 - http://livedocs.adobe.com/flex/3/html/help.html?content=containers_intro_3.html

具體的childAdd將事件可能是您在迭代它之前想要聽的內容:

add將組件添加到組件後分派其容器和父母與孩子處於一致狀態。在容器發送了childAdd事件併發生了所有需要添加的更改之後,纔會分派此事件。

=瑞恩 [email protected]

+0

嗨,謝謝你。不幸的是我不認爲這是問題,因爲我可以看到孩子們已經被創建好了,然後我點擊了迭代它們的按鈕 - 即DisplayObjects本身在屏幕上可見。另外,由於迭代不會發生,直到我點擊一個按鈕,我可以在DisplayObject添加之前等待任何時間長度,然後開始迭代,但即使從我能看到DisplayObject在屏幕上,我仍然遇到同樣的問題 – Addsy 2010-01-05 18:39:42