如果皮肤在spark按钮上更改,如何获取通知

时间:2013-01-10 09:42:18

标签: flex flex-spark

我有一个带有自定义skinclass的spark按钮子类,定义如下:

<s:Button xmlns:fx="http://ns.adobe.com/mxml/2009"
      xmlns:s="library://ns.adobe.com/flex/spark"
      skinClass="com.company.NvrControlButtonSkin"
      enabled="false">

然后我在这个按钮子类的脚本部分有一个对象的setter,在那里我在该对象上注册了一个属性监听器。在监听器中,我需要在皮肤上设置一个属性。但是,skin属性返回的对象不是我在skinClass上设置的类型。 我假设在设置实际外观之前已经调用了我的属性侦听器。我现在希望在实际更改skin属性时收到通知,以便我可以在皮肤对象上设置所需的属性。

有什么我可以听的或者我可以覆盖的方法或者现在通知皮肤实际设置为我的自定义皮肤的东西吗?

1 个答案:

答案 0 :(得分:0)

你很幸运,这是一个简单的解决方案。 SkinnableComponent(以及Button)实现了以下两个受保护的方法,您可以覆盖它们:

那就是说,我会尽量避免直接在皮肤上设置属性,因为它会在主机组件和皮肤之间产生紧密耦合。尝试使用外观部件更新属性。