在哪里放置布局代码

时间:2011-08-24 14:53:13

标签: flex actionscript lifecycle

我需要一些代码才能在知道其子代的所有大小后在组件中运行。该组件具有绝对布局。我认为我的组件的measure()函数会在被调用的所有子项的measure()函数被调用之后被调用,但似乎因为它具有绝对布局,它甚至从不调用度量。

无论如何,它是一个Canvas而我的override protected function measure():void永远不会运行。我做错了什么?

2 个答案:

答案 0 :(得分:1)

updateDisplayList()在UIComponent的commitProperties中调用。我相信这是在知道子大小之后调用的,而且你应该放置你的布局代码。

在组件上明确设置宽度和高度时,不会调用

measure()。如果您的画布上有绝对布局,但没有设置宽度和高度,则会调用measure()。

HTH;

艾米

答案 1 :(得分:0)

您不需要覆盖任何内容,只需将侦听器添加到组件的creationComplete即可。此事件为“在组件完成构造,属性处理,测量,布局和绘制时调度。”

组件继承自s:Group

的示例
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" 
     xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300"
     creationComplete="group1_creationCompleteHandler(event)">
<fx:Script>
    <![CDATA[
        import mx.events.FlexEvent;

        protected function group1_creationCompleteHandler(event:FlexEvent):void
        {
            //TODO add code here
        }

    ]]>
</fx:Script>
</s:Group>