1


1

Flex無効化フレームワークでダーティフラグ「invalidatePropertiesFlag」をリセットするときですか?

Flex 3(Flex 4)SDKのmx.core.UIComponentクラスのメソッド「validateProperties」のリストを参照してください。

public function validateProperties():void
{
    if (invalidatePropertiesFlag)
    {
        commitProperties();

        invalidatePropertiesFlag = false;
    }
}

私の質問は:

ダーティフラグ_invalidatePropertiesFlag_が_commitProperties_呼び出しの* after *ではなく、この呼び出しの*前*ではリセットされないのはなぜですか?

私はこれが理由だと推測します:

1)IFブロックの最後にダーティフラグを置くのは人生の問題です。

2)_commitProperties_内のコードがRTEを上げる場合、Flash Playerで次のフレームを再生中に_commitProperties_のコードを実行する機会がありますが、今回はコードがRTEをスローしない可能性があります。

'' '' '

この質問をする理由は次のとおりです。

_commitProperties_内のコードがダーティフラグと_invalidateProperties_無効化呼び出しを使用して別の_UIComponent_のプロパティを無効にしようとすると、ダーティフラグ_invalidatePropertiesFlag_はまだリセットされていないため、この無効化呼び出しは_mx.managers.LayoutManager.invalidatePropertiesQueue_に追加されませんcommitProperties呼び出し。

1 Answer


1


実行フローに従って、論理的に「未変更としてマークする」(フラグをリセットする)に見えるのは、処理し、状態を有効な状態に設定した後のみです。 同じフラグを使用して他のプロパティを無効にする必要がある場合は、これを行うための個別のフラグが必要です。

*更新:*実際の問題を誤解して申し訳ありません。 invalidatePropertiesFlagの場合、commitPropertiesを呼び出す前にfalseに設定する必要があることに、ここで同意する必要があります。 一方、 `callLater()`のようなものを介して無効化メソッドを呼び出す必要があります。