Apache flex 强制重新测量

Apache flex 强制重新测量,apache-flex,Apache Flex,我有一个由两个主要部分组成的函数(我称它们为a和B)。当A部分完全完成布局更改时,B部分需要运行。但是,没有“part A is done”信号,因此我在part B运行之前调用了validateNow()。这是可行的,但似乎效率非常低——我想知道是否有其他的技巧可以迫使我立即采取措施或采取类似的措施,或者我是否被卡住了。 谢谢大家! 一些代码可能会有帮助,因为我很难描述您描述的情况。我的意思是,我猜正在进行的操作是异步的,因为很明显,任何同步的操作都会使定时成为一个不成问题的问题。A部分到底在

我有一个由两个主要部分组成的函数(我称它们为a和B)。当A部分完全完成布局更改时,B部分需要运行。但是,没有“part A is done”信号,因此我在part B运行之前调用了validateNow()。这是可行的,但似乎效率非常低——我想知道是否有其他的技巧可以迫使我立即采取措施或采取类似的措施,或者我是否被卡住了。
谢谢大家!

一些代码可能会有帮助,因为我很难描述您描述的情况。我的意思是,我猜正在进行的操作是异步的,因为很明显,任何同步的操作都会使定时成为一个不成问题的问题。A部分到底在做什么


然而,与此同时,您应该始终从事件和事件侦听器的角度考虑异步操作。因此,有两个函数,一个用于侦听另一个中的操作所调度的事件,而不是试图使一个函数处理所有事情。

您可以从
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我想知道PartA和PartB是否都包含UIComponents。我个人认为添加updateComplete处理程序比向updateDisplayList()添加一些内容更好。updateDisplayList()不一定会在每次渲染事件期间运行。但是,这在很大程度上取决于事情是如何实现的,并且没有来自原始海报的代码,这很难猜测。您没有提供代码,也没有说明A和B是什么。如果它们确实是单个函数的一部分,那么它们应该同步运行,而不需要执行任何其他操作。