Flex:组件如何知道其样式之一是否已更改?
我从 TextField 继承了一个自定义组件。 组件需要知道其任何样式在运行时通过 setStyle 发生更改。 我该怎么做呢? 这可能是显而易见的,但我找不到事件或适当的方法来覆盖。
I inherited a custom component from TextField. The component needs to know when any of its styles got changed at runtime via setStyle. How would I do that? It's probably obvious but I couldn't find an event or appropriate method to override.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
styleChanged () 方法
检测样式属性的更改。 当设置任何样式属性时,Flex 会调用 styleChanged() 方法,并向其传递所设置样式的名称。
这是一个高级方法,您可以在创建 UIComponent 的子类时重写该方法。 创建自定义组件时,您可以重写 styleChanged() 方法来检查传递给它的样式名称,并相应地处理更改。 这使您可以覆盖现有样式的默认行为,或添加您自己的自定义样式属性。
如果您处理 style 属性,则对 styleChanged() 方法的重写应调用 invalidateDisplayList() 方法,以使 Flex 在下一次屏幕更新时执行组件的 updateDisplayList() 方法。
参数 styleProp:String — 样式属性的名称,如果该组件的所有样式均已更改,则为 null。
styleChanged () method
Detects changes to style properties. When any style property is set, Flex calls the styleChanged() method, passing to it the name of the style being set.
This is an advanced method that you might override when creating a subclass of UIComponent. When you create a custom component, you can override the styleChanged() method to check the style name passed to it, and handle the change accordingly. This lets you override the default behavior of an existing style, or add your own custom style properties.
If you handle the style property, your override of the styleChanged() method should call the invalidateDisplayList() method to cause Flex to execute the component's updateDisplayList() method at the next screen update.
Parameters styleProp:String — The name of the style property, or null if all styles for this component have changed.
如果您希望文本字段能够与 Flex 中的容器和其他组件很好地配合,您可能需要将其包装在
UIComponent
中,或者让子类实现IUIComponent
和IStyleClient
或ISimpleStyleClient
接口(UIComponent 实现)。 如果您这样做,该组件将与 Flex 的样式系统一起使用,并且每次样式更改时都会调用名为
styleChanged` 的方法:请参阅 http://livedocs.adobe.com/flex/3/langref/mx/core/UIComponent.html#styleChanged()< /a>
If you want the text field to play nicely with containers and other components in Flex you may want to wrap it in a
UIComponent
, or have the subclass implement theIUIComponent
andIStyleClient
orISimpleStyleClient
interfaces (whichUIComponent implements). If you do the component will work with Flex' style system and every time a style changes a method called
styleChanged` will be called:See http://livedocs.adobe.com/flex/3/langref/mx/core/UIComponent.html#styleChanged()