У меня есть средство визуализации элементов для сетки, которая имеет довольно основную функцию updateDisplayList:сетка Renderers обновления без 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), когда появляются новые строки в нижней части сетки, выводится названиеDisplayList, а код для повторного рисования фона и перемещения/изменения размера метки выполняется.
Проблема в том, что эти чанеги не отражаются в представлении. Текст неправильно выровнен, так как метка, используемая для отображения большой строки, теперь отображает короткую строку, поэтому переменная measuredWidth изменилась.
В следующий раз, когда я прокручиваю обновление рендеринга, чтобы оно выглядело так, как должно, но updateDisplayList НЕ вызывается здесь (на рендерах). Все, что происходит, заключается в том, что рендеринги переориентируются в сетку. И фон, и метка отображаются неправильно, так что это не просто неправильное поведение метки.
Кто-нибудь понял, почему это происходит?
Благодаря
Показывает, что ваш код updateDisplayList() не поможет нам понять, почему этот метод не вызывается. Вам нужно будет предоставить больше. Какой компонент вы расширяете? Как работают рендер и сетка? – JeffryHouser
Спасибо за ответ. Я не спрашиваю, почему он не называется - я не хочу, чтобы его вызывали не один раз. Я спрашиваю, почему обновления, применяемые функцией updateDisplayList, не отображаются до тех пор, пока не произойдет следующий рендеринг. – Roaders