当前位置: > > > AS3 - 何时会执行updateDisplayList()方法的总结

AS3 - 何时会执行updateDisplayList()方法的总结

开发Flex时不可避免的要使用或重写组件的updateDisplayList()方法,下面对何时会调用updateDisplayList()方法做个总结:

1,使用 addChild() 方法将组件添加到容器时,会先执行父容器的updateDisplayList(),再执行子对象的updateDisplayList()

2,调用组件的 invalidateDisplayList() 方法时

3,调用组件setStyle()方法设置样式时,会调用styleChanged()方法,如果发现该样式不存在或者样式值与当前的值不统一,该方法里面又调用invalidateDisplayList() 方法

4,设置子组件的宽,高等相关的属性,会调用父容器的updateDisplayList()方法。(比如width,height,percentWidth,explicitMinWidth,explicitWidth等)
  注:1,设置子组件的x,y不会调用父容器的updateDisplayList()方法
       2,用setActualSize()来设置子组件的宽高,不会再调用父容器的updateDisplayList()方法
       3,如果子组件includeInLayout = false,则设置子组件的width,height也不会再调用父容器的updateDisplayList()方法
override public function set height(value:Number):void
{
    if (explicitHeight != value)
    {
        explicitHeight = value;
        // We invalidate size because locking in width
        // may change the measured height in flow-based components.
        invalidateSize();
    }
    if (_height != value)
    {
        invalidateProperties();
        invalidateDisplayList();
        var p:IInvalidating = parent as IInvalidating;
        if (p && includeInLayout)
        {
            p.invalidateSize();
            p.invalidateDisplayList();
        }
        _height = value;
        dispatchEvent(new Event("heightChanged"));
    }
} 
评论0