2013-01-10 67 views
0

我有一个自定义的skinClass火花按钮子类,定义的变化如何获得通知如下:如果皮肤上的火花按钮

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

我有那么此按钮子类的一个二传手的脚本部分对象,我在那里注册一个属性监听器。在侦听器中,我需要在皮肤上设置属性。但是,碰巧skin属性返回的对象还不是我在skinClass上设置的类型。 我假设我的属性侦听器已经在实际皮肤设置之前调用过。我现在希望在skin属性实际发生更改时收到通知,以便我可以在需要的皮肤对象上设置属性。

有什么我可以听到或我可以重写的方法或通知皮肤实际上设置为我的自定义皮肤的东西吗?

回答

0

你很幸运,这是一个简单的修复。 SkinnableComponent(因此也Button)实现以下两种保护方法,它可以覆盖:

  • attachSkin(),叫每一个新的皮肤被应用到组件
  • detachSkin(),调用时在当前的皮肤被删除从组件

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