我有一个网格的项目渲染器,它具有相当基本的 updateDisplayList 功能:
override protected function updateDisplayList( w : Number, h : Number ) : void
{
super.updateDisplayList( w, h );
var labelWidth : Number = Math.min( _labelDisplay.measuredWidth, w );
var labelHeight : Number = Math.min( _labelDisplay.measuredHeight, h );
_labelDisplay.setActualSize( labelWidth, labelHeight );
var labelX : Number = ( w - _labelDisplay.width ) / 2;
var labelY : Number = ( h - _labelDisplay.height ) / 2;
_labelDisplay.move( labelX, labelY );
//this is just for debugging
graphics.clear();
graphics.beginFill( 0xFF0000, 0.5 );
graphics.drawRect( labelX, labelY, labelWidth, labelHeight );
graphics.endFill();
}
其中 _labelDisplay 是火花标签。当我滚动网格(这是一个 cuatom 网格,不是 mx:Grid 或 AndvancedDataGrid)时,当网格底部出现新行时,调用 updateDisplayList 并重新绘制背景和移动/调整标签大小的代码执行。
问题是这些变化没有反映在视图中。文本未对齐,因为用于显示大字符串的标签现在显示短字符串,因此测量宽度已更改。
下次我滚动渲染更新以使其看起来像它们应该的那样 - 但是这里没有调用 updateDisplayList (在渲染上)。所发生的只是渲染器在网格中重新定位。背景和标签最初都显示不正确,因此不仅仅是标签行为不当。
有人知道为什么会这样吗?
谢谢