2011-05-09 53 views
1

我有一個由兩個主要部分組成的函數(我將稱它們爲A和B)。 B部分需要在部分A完成其佈局更改時完成。但是,沒有「部分A完成」信號,因此我在B部分運行之前一直調用validateNow()。這種方式很有效,但似乎效率很低 - 想知道是否有其他技巧來強制立即採取措施或沿着這些方向行事,或者如果我卡住了。 謝謝!強制重新測量

+0

從我-1。您沒有提供代碼,也沒有提供A和B的描述。如果它們真的是單個函數的一部分,那麼它們應該同步運行而不需要做其他任何事情。 – JeffryHouser 2011-05-09 17:53:42

回答

2

您可以從updateDisplayList()中調用B部分。

對於您需要引入一些標誌:完成A部分後函數內

private var partAPerformed:Boolean; 

然後:

partAPerformed = true; 
invalidateDisplayList(); 

然後:

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

我個人覺得添加一個updateComplete處理程序比向updateDisplayList()添加一些東西更好。 updateDisplayList()不一定會在每個渲染事件中運行。但是,這很大程度上取決於如何實施,而且沒有原始海報的代碼,這很難猜測。 – JeffryHouser 2011-05-09 17:52:12

1

某些代碼會有幫助,因爲我很難描繪出您描述的情況。我的意思是,我猜測正在進行的操作是異步的,因爲顯然任何同步操作都會使時間成爲非問題。 A部分究竟做了什麼?

但是在此期間,您應該始終以事件和事件偵聽器的角度來考慮異步操作。所以有兩個函數,一個監聽另一個監聽的事件,而不是試圖創建一個處理所有事情的函數。

+0

+1我想知道PartA和PartB在哪裏UIComponent。 – JeffryHouser 2011-05-09 17:51:05