У меня есть средство визуализации элементов для сетки, которая имеет довольно простую функцию 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 (для рендеров). Все, что происходит, - это то, что рендеры перемещаются в сетку.
И фон, и метка изначально отображаются некорректно, так что это не просто неправильная работа метки.
Кто-нибудь понял, почему это происходит?
Спасибо