Flex 3 (Flex 4) SDK の mx.core.UIComponent クラスのメソッド「validateProperties」のリストを参照してみましょう。
public function validateProperties():void
{
if (invalidatePropertiesFlag)
{
commitProperties();
invalidatePropertiesFlag = false;
}
}
私の質問は:
commitProperties の呼び出し後にダーティ フラグinvalidatePropertiesFlagがリセットされるのに、この呼び出しの前にリセットされないのはなぜですか?
これは次の理由によると推測します。
1) IF ブロックの最後にダーティ フラグを付けるのは命の問題です。
2) commitProperties内のコードで RTE が発生した場合でも、Flash Player で次のフレームを再生しているときにcommitProperties内のコードを実行する機会があり、今回はコードが RTE をスローしない可能性があります。
この質問をする理由は、次の事実です。
commitProperties内のコードがダーティ フラグとinvalidateProperties無効化呼び出しを使用して別のUIComponentのプロパティを無効にしようとする場合、この無効化呼び出しはmx.managers.LayoutManager.invalidatePropertiesQueueに追加されません。これは、ダーティ フラグinvalidatePropertiesFlagがまだリセットされていないためですcommitProperties 呼び出し。