2011-01-19 75 views
0

我想在添加一些子組件後獲取組件的實際高度。Flex 3 - 獲取組件的實際大小

當在調試模式下檢查變量選項卡時,我看到2個不同的高度變量: $ height(其中包含正確值:138)和height/_height(其中包含錯誤值:10)。

我想顯示沒有更新,所以我沒有得到正確的高度使用component.height,但我怎麼能得到$高度值?

感謝您的幫助,您可以提供=)

問候, BS_C3


@Flextras

再次,非常感謝您的回答!這真的很詳細=)

Measuredheight沒有給我我正在尋找的價值,而explicitHeight沒有價值(NaN)。我現在不能測試,所以我不能告訴的unscaledHeight屬性...

這裏是我有什麼結構:

MainContainer - Canvas 
    BOX1 - Canvas (height = 100) 
    BOX2 - Canvas (height = 100) 
    VariableBox - Canvas (height: depends on the height of it's variable number of children) 
    Text - TextArea 

我需要VariableBox的高度,以定位文本。

功能如下:

updateDisplay(){ 
    for(i;i<list.length;i++){ 
     VariableBox.addChild(new HBox); 
    } 
    // reposition Text depending on VariableBox's height 
} 

我知道我不會放棄任何代碼,但我不是我的工作電腦上,現在> _ <

希望這有助於!

回答

0

最終的解決方案:

我終於發現我有一個父容器,而我是動態地添加一些孩子多數民衆贊成讓我滿意,而不做一些奢侈的東西,一些解決辦法...

,它的高度WASN沒有更新。我遇到的問題是,既沒有測量高度,也沒有明確的高度,也沒有高度,也沒有父容器的無縮放高度給我提供我需要時的高度。

因此,我爲每個孩子的creationComplete添加了一個監聽器。創建完成事件啓動後,每個孩子的控制都會被考慮在內。此時,父容器的measuredHeight設置爲期望值。所以我只需要設置:

parentContainer.height = parentContainer.measuredHeight 

再次感謝Flextras誰給了一些有用的信息=)

問候。

5

簡答題:使用getMeasuredOrExplicitWidth()getMeasuredOrExplicitHeight()方法。

在很多情況下,heightwidth將返回與這些方法相同的值。

較長的回答: 您使用什麼組件?既然你用Flex標記了這個,我將假定它是一個擴展UIComponent的Flex可視化組件。

你有幾個不同的身高值來看,但要記住,它是父母的責任,以調整它的孩子。將子項添加到組件不一定會改變它的高度或寬度。這取決於您要添加子項的組件是否將子項考慮在內。

首先看看measuredHeightmeasuredWidth。這些是使用度量方法計算的組件的首選大小值。某些組件(如HBox或VBox)會自動「意識到」他們的孩子,並在計算其大小時使用這些組件。其他組件,例如UIComponent,在設置measuredHeight或measuredWidth時不考慮孩子。

其次,你可以看看explicitHeight和explicitWidth。如果您設置高度或寬度,則會設置這些值。我不相信如果使用setActualSize()方法設置這些值。引擎蓋下有一些魔法,所以explicitHeightexplicitWidth被高度和寬度掩蓋。它們通常是相同的,但並非總是如此。

我通常不會處理縮放,但是如果您需要組件的未縮放高度和寬度,則組件的受保護屬性爲unscaledWidthunscaledHeight。我相信這些是傳遞給updateDisplayList()方法的值。

請記住,對於組件在添加或刪除子項後自行調整大小,組件必須經歷它自己的生命週期。所以這個代碼:

trace(container.width); 
container.addChild(myChild); 
trace(container.width); 

可能不會改變容器的寬度,因爲容器一直沒有機會運行措施()的updateDisplayList(),或的commitProperties()方法。

如果這沒有幫助,你將不得不得到更具體的和提供一些代碼。

+0

謝謝=)我剛剛編輯我的帖子。 Regards – 2011-01-19 16:00:41