Flex:组件如何知道其中一个样式是否已更改?

时间:2009-06-26 16:13:14

标签: actionscript-3 flex flex3

我从TextField继承了一个自定义组件。组件需要知道何时在运行时通过setStyle更改了它的任何样式。我该怎么办?这可能是显而易见的,但我找不到要覆盖的事件或适当的方法。

2 个答案:

答案 0 :(得分:2)

如果您希望文本字段与Flex中的容器和其他组件很好地匹配,您可能希望将其包装在UIComponent中,或让子类实现IUIComponentIStyleClientISimpleStyleClient接口(将调用UIComponent implements). If you do the component will work with Flex' style system and every time a style changes a method called styleChanged`:

public function styleChanged(styleProp:String):void

请参阅http://livedocs.adobe.com/flex/3/langref/mx/core/UIComponent.html#styleChanged()

答案 1 :(得分:1)

styleChanged()方法

public function styleChanged(styleProp:String):void

检测样式属性的更改。设置任何样式属性时,Flex会调用styleChanged()方法,并向其传递要设置的样式的名称。

这是一种在创建UIComponent的子类时可能会覆盖的高级方法。创建自定义组件时,可以覆盖styleChanged()方法以检查传递给它的样式名称,并相应地处理更改。这使您可以覆盖现有样式的默认行为,或添加自己的自定义样式属性。

如果你处理style属性,你的styleChanged()方法的覆盖应该调用invalidateDisplayList()方法,以使Flex在下一次屏幕更新时执行组件的updateDisplayList()方法。

参数styleProp:String - 样式属性的名称,如果此组件的所有样式都已更改,则返回null。