validateNow()方法解决measuredWidth等于0问题

来源:互联网 发布:淘宝彩妆正品店 编辑:程序博客网 时间:2024/05/09 09:11

今天遇到一个很诡异的问题,在某些情况下(并不是总出现),updateDisplayList中buttonBar.measuredWidth总是等于0,导致buttonBar在页面上无法显示,调用buttonBar.validateNow();问题解决。可能是buttonBar的validateSize()方法没有调用。

另外如果不用buttonBar.validateNow();调用buttonBar.setStyle("backgroundColor", 0x00ff00);也可以解决问题。决定把UIComponent源代码读一遍,9000多行...

 

override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
 {
  super.updateDisplayList(unscaledWidth, unscaledHeight);
  if(!isDragging){
   var paddingLeft:Number = getStyle("paddingLeft") > 10? getStyle("paddingLeft") : 10;
         var paddingRight:Number = getStyle("paddingRight") > 10? getStyle("paddingRight") : 10;
         var headerHeight:Number = getHeaderHeight();
        
   buttonBar.validateNow();
   buttonBar.width = buttonBar.measuredWidth;
   buttonBar.height = headerHeight;
   buttonBar.x = unscaledWidth - paddingRight - buttonBar.width;
   buttonBar.y = 0;
        
         titleTextField.width = buttonBar.x - paddingLeft;
   titleTextField.toolTip = title;
  }
 }