0

Flex でのコンポーネントの検証と無効化について、いまだに混乱しています。バリデーションができることと無効化できないこと、およびその逆について簡単に比較してください。

私は本当にあなたの助けに感謝します.

ありがとう。

4

1 に答える 1

1

私はコメントに同意しますが、これはかなりよく文書化されており、「無効化」メソッドと「検証」メソッドの間の全体的な関係が欠けていると思います。基本的に、表示リスト、サイズ、プロパティなど、何かを無効にする呼び出しを行うときはいつでも、それらのいずれかにブール値フラグを設定するように指示するだけです (変更するプロパティを変更するときはいつでも)。 set width が呼び出されると、invalidateProperties などの適切な無効化メソッドが呼び出されます)。次のエンター フレーム/レンダリングが発生すると、フラグがチェックされ、フラグのいずれかが無効に設定されている場合は、対応する検証メソッド (updateDisplayList、commitProperties、measure) が呼び出されます。

FB/Eclipse で自分のコードを確認するには、Ctrl+Shift+T を押して UIComponent をプルアップし、UIComponent.as が開いたら Ctrl+O を押して、validate と入力します。メソッド本体が 1 行で、素敵な ASDoc コメントがあることがわかります。それが何をするかを説明しています。さらに良いことに、ILayoutManager で validateClient を呼び出し、LayoutManager をポップして開き (Ctrl+Shift+T をもう一度)、validateClient を見てください。

私もかつてそのボートに乗っていたので、これがあなたの出身地だと思います。プロパティの更新とそれが兄弟/親/子に影響を与えることの関係を理解し​​ていませんでしたが、プロパティは変更できるため、処理負荷を軽減する上で本当に重要ですフレームのリフレッシュの間に複数回、実際に再描画されるまで、その周りのすべてを再計算する必要はありません。

問題は、プロパティを変更してすぐに (次の行の実行で) レイアウトの他の部分をどのように変更したかを確認できることです。この場合、プロパティを変更した後に validateNow() を呼び出すことができますプロパティは、再描画が発生する前に複数回発生する可能性がある場合でも、そのすべてをすぐに更新するように強制します。通常、これは不要な CPU 時間が浪費されることを意味するため、一般的には優れた方法ではありませんが、最も簡単なオプションである場合もあります。

于 2012-05-03T19:52:00.017 に答える