我有一个具有相当基本的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是一个spark标签。当我滚动网格时(这是一个cuatom网格,而不是mx:Grid或AndvancedDataGrid)当网格底部出现新行时,会调用updateDisplayList并重新绘制背景并移动/调整标签大小的代码执行。 / p>
问题是这些chanegs没有反映在视图中。文本未对齐,因为用于显示大字符串的标签现在显示一个短字符串,因此measuredWidth已更改。
下次我将渲染渲染更新为看起来应该是 - 但是此处不调用updateDisplayList(在渲染上)。所有这一切都是渲染器重新定位在网格中。 背景和标签最初都显示不正确,因此不仅标签不正确。
任何人都知道为什么会这样?
由于
答案 0 :(得分:0)
只是一个猜测,但这有什么不同吗?
override protected function updateDisplayList( w : Number, h : Number ) : void
{
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 );
super.updateDisplayList( w, h ); // Call updateDisplayList after moving / resizing _labelDisplay
}