creationComplete事件未显示正确的高度和宽度

时间:2011-04-27 12:54:36

标签: actionscript-3 flex4 mxml

我有一个问题,使用MXML,正确获取myBox的高度和宽度属性,但使用ActionScript获取的正确高度和宽度不正确。

my:Tab扩展了NavigatorContent(这不是标签栏中的标签)
com:myBox扩展了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。

在同一myBox的creationComplete事件中,我需要访问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的任何想法?

2 个答案:

答案 0 :(得分:1)

在使用box初始化creationComplete时,请参阅initialization sequence in Flex。父组件尚未完全初始化。在您的情况下,最好覆盖protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void并从那里使用实际大小。

答案 1 :(得分:0)

答案很简单。我要做的只是在请求高度和宽度之前调用validateSize(false)