AS3 - 何时会执行updateDisplayList()方法的总结
作者:hangge | 2015-02-26 14:43
开发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)