【问题标题】:Grid Renderers updating without updateDisplayList being called网格渲染器更新而不调用 updateDisplayList
【发布时间】:2011-04-25 09:18:31
【问题描述】:

我有一个用于网格的项目渲染器,它具有相当基本的 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(在渲染上)。所发生的只是渲染器在网格中重新定位。 背景和标签最初都显示不正确,因此不仅仅是标签行为不当。

有人知道为什么会这样吗?

谢谢

【问题讨论】:

  • 向我们展示您的 updateDisplayList() 代码不会帮助我们弄清楚为什么没有调用该方法。你必须提供更多。你在扩展什么组件?渲染器和网格如何协同工作?
  • 感谢您的回复。我不是在问为什么不调用它 - 我不希望它被调用不止一次。我在问为什么 updateDisplayList 函数应用的更新在下一次渲染发生之前不可见。

标签: apache-flex flash uicomponents


【解决方案1】:

只是猜测,但这有什么不同吗?

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
}

【讨论】:

    猜你喜欢
    • 2017-09-24
    • 1970-01-01
    • 2023-03-13
    • 2021-10-30
    • 2011-11-17
    • 1970-01-01
    • 2011-05-26
    • 2020-04-25
    • 2021-04-26
    相关资源
    最近更新 更多