2009-06-08 73 views
0

我有一個我寫的函數,它可以在不滾動的情況下獲得應用程序的高度。意味着它不需要滾動的高度。Flex:獲取兒童高度......何時調用功能?

這是函數:

private function getContentHeight():Number 
      { 
       var height:Number = 0; 
       for(var i:uint = 0; i<this.numChildren; i++) 
       { 
        var d:DisplayObject = this.getChildAt(i) as DisplayObject; 
        //trace(d.name+":"+d.height); 
        height += d.height; 
       } 
       height += Number(this.getStyle('verticalGap'))*this.numChildren; 
       height += Number(this.getStyle('paddingTop')); 
       height += Number(this.getStyle('paddingBottom')); 
       return height; 
      } 

此功能效果很好,但問題是要知道何時調用它。我計劃在添加/刪除任何兒童後調用它。但是,這還太早,因爲我沒有得到正確的高度,但如果我運行它然後。我目前使用的補丁是在添加/刪除子項後使用計時器調用函數大約300毫秒,這似乎很好,但我認爲這是一個非常危險的修復。所以我想知道更好的解決方案。我認爲必須有某種事件可以聽,這會告訴我什麼時候準備好運行這個功能,我只是不知道會發生什麼事件?

謝謝!

回答

1

首先,看看measuredWidthmeasuredHeight屬性UIComponent(因此所有控件和容器都具有這些屬性),flex已經測量了容器所需的寬度/高度。

其次,正確的地方看這個屬性是creationCompleteupdateComplete事件。在你的情況下,如果你添加一些programmaticaly的孩子,你應該處理updateComplete事件後,你添加了你的孩子。