2011-04-27 106 views
0

我有一個問題,即使用MXML,myBox的高度和寬度屬性被正確獲取,但使用ActionScript獲取的正確高度和寬度不正確。creationComplete事件不顯示正確的高度和寬度

我的標籤擴展NavigatorContent(這不是標籤欄中的標籤)
com:myBox extends BorderContainer。

<mx:ViewStack id="viewstack_main" width="100%" height="100%" creationPolicy="all">       
<my:Tab label="My Tab">  
    <s:Scroller height="100%" width="100%"> 
    <s:Group height="100%" width="100%">    
     <com:myBox>         
     </com:myBox>   
    </s:Group> 
    </s:Scroller>  
</my:Tab>  
</mx:ViewStack> 

myBox上構造我設置了percentWidthpercentHeight到兩個100

creationComplete事件一樣myBox上的,我需要訪問heightwidth

這對MXML可以正常工作。

但是使用ActionScript我需要添加另一個選項卡。

var navContainer:Tab = new Tab(); 
viewstack_main.addElement(navContainer); 

var scroller:Scroller = new Scroller(); 
scroller.percentHeight = 100; 
scroller.percentWidth = 100; 
navContainer.addElement(scroller); 

var grp:Group = new Group();     
grp.percentHeight = 100; 
grp.percentWidth = 100;    
scroller.viewport = grp;   

var box:myBox = new myBox();     
grp.addElement(box); 

但不幸的是,在盒子的creationComplete事件,高度和寬度屬性不被預期的(設置100%後的高度&寬度)。它是112.

任何想法爲什麼這與MXML,但不是ActionScript的作品?

+0

您是否試圖使myBox的顯示無效? – 2011-04-27 20:44:10

+0

那是creationComplete之後,是嗎? – 2011-04-28 01:58:08

+0

不,它告訴自組織在下一幀重繪對象。 – 2011-04-28 02:30:46

回答

0

答案很簡單。在請求高度和寬度之前,我只需要撥打validateSize(false)

1

參考initialization sequence in Flex在您的box初始化爲creationComplete時,父組件仍未完全初始化。在你的情況下,最好重寫protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void並從那裏使用實際大小。

+0

任何想法爲什麼它能在MXML中完美工作? – 2011-04-27 13:06:10

+0

我不知道沒有看到你所有的代碼:( – Constantiner 2011-04-27 13:11:56

+0

所以,如果我想獲得框的實際高度和寬度,我必須在Tab的creationComplete事件中完成它?我認爲creationComplete事件在調整大小後觸發一切都完成了,否則我將不得不從孩子那裏聽父母的creationComplete事件,這是可能的嗎? – 2011-04-27 13:30:46