强制重新衡量

时间:2011-05-09 17:02:12

标签: flex

我有一个由两个主要部分组成的功能(我称之为A和B)。当A部分完全完成布局更改时,B部分需要运行。但是,没有“A部分完成”信号,因此我在B部分运行之前一直调用validateNow()。这种方法有效,但看起来非常低效 - 想知道是否有任何其他技巧迫使立即采取措施或某些事情沿着这些方向或如果我被卡住了。 谢谢!

2 个答案:

答案 0 :(得分:2)

您可以在updateDisplayList()内调用B部分。

为此你需要引入一些标志:

private var partAPerformed:Boolean;

然后在完成A部分后的功能内:

partAPerformed = true;
invalidateDisplayList();

然后:

override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
    super.updateDisplayList(unscaledWidth, unscaledHeight);
    if (partAPerformed)
    {
        // Part B
        partAPerformed = false;
    }
}

答案 1 :(得分:1)

有些代码会有所帮助,因为我很难描绘你所描述的情况。我的意思是,我猜测正在进行的操作是异步的,因为显然任何同步都会使时间成为非问题。 A部分到底在做什么?

与此同时,您应该始终考虑事件和事件侦听器方面的异步操作。所以有两个函数,一个监听另一个函数调度的事件,而不是试图创建一个处理所有事件的函数。