我了解在创建自定义组件时,通常最好的做法是通过使用 setter/getter、设置“脏”标志、调用 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 类中“标签”的设置器已经使用了一个失效过程,这使得上面的代码毫无意义,是吗?还是我错过了什么?