2

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

4

1 回答 1

1

但是在属性只影响 Spark 组件的情况下,这不是多余的吗,因为 Spark 组件已经推迟了它们的属性更改?

我不相信这是一个真实的陈述。Spark 组件延迟其属性更改的方式与 MX 组件没有任何不同。

但是 Spark Button 类中“标签”的设置器已经使用了一个失效过程,这使得上面的代码毫无意义,是吗?还是我错过了什么?

是的,您错过了每个火花组件都有自己的失效周期这一事实。这与一个 MX 组件包含另一个组件的 MX 组件没有什么不同。

我不清楚,但您似乎正在查看两个相同的东西(MX 无效和 Spark 无效)并说它们是不同的。

于 2012-08-18T14:06:31.670 回答