我有一个问题,使用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 的构造函数中,我将percentWidth
和percentHeight
设置为100。
在同一myBox的creationComplete
事件中,我需要访问height
和width
。
这适用于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 :(得分:1)
在使用box
初始化creationComplete
时,请参阅initialization sequence in Flex。父组件尚未完全初始化。在您的情况下,最好覆盖protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
并从那里使用实际大小。
答案 1 :(得分:0)
答案很简单。我要做的只是在请求高度和宽度之前调用validateSize(false)
。