カスタムコンポーネントを作成するときは、通常、セッター/ゲッターを使用し、「ダーティ」フラグを設定し、invalidateProperties()を呼び出してから、commitProperties()に実際の変更を処理させることにより、プロパティの変更を延期することがベストプラクティスであることを理解しています。
しかし、プロパティがSparkコンポーネントにのみ影響する場合、Sparkコンポーネントはすでにプロパティの変更を延期しているため、これは冗長ではないでしょうか。
たとえば、Spark Buttonを含むカスタムUIComponentがあり、ボタンのラベルを変更するbuttonLabelプロパティを公開したいとします。
private var _buttonLabel:String;
private var myBtn:Button;
private var _buttonLabelChanged:Boolean = false;
function set buttonLabel(lbl:String){
_buttonLabel = lbl;
_buttonLabelChanged = true;
invalidateProperties();
}
したがって、buttonLabelプロパティを設定すると、最終的に次のようにトリガーされます。
override protected function commitProperties(){
if(_buttonLabelChanged){
myBtn.label = _buttonLabel;
_buttonLabelChanged = false;
}
}
しかし、Spark Buttonクラスの「label」のセッターはすでに無効化プロセスを使用しているため、上記のコードは無意味になりますね。それとも私は何かが足りないのですか?