[Flex]Flex SDK 4(Gumbo)更方便的自定义样式、自定义SparkSkin(三)

通过上两篇文章我们可以得到一个结论:使用SparkSkinSkin方式设定spark组件的皮肤是非常容易的事情。如果同样的效果在Flex SDK 3里面设定的话,将会是件非常麻烦的事情。
Flex SDK 4(Gumbo)众所周知有两套组件:spark组件和halo组件,那么既然spark组件中的皮肤设定是非常容易的事情,在halo中呢?能否也会像spark组件一样方便?

答案:当然是肯定的。
其原因是:仍旧使用SparkSkinSkin组件来完成自定义皮肤。

先回忆一下在spark组件中自定义皮肤的方法:
1、
Button { 
    skinClass: ClassReference("com.rianote.flex.skin.KButton"); 
}
2、<Button skinClass="com.rianote.flex.skin.KButton" />
3、myButton.setStyle( "skinClass", Class( KButton ));

在spark中,对其设定皮肤我们使用skinClass这个属性。同样在halo包里面,我们应该如何定义这个皮肤呢?

看以下的代码:
<fx:Style>
    .sparkButtonStyle {
         skin: ClassReference("com.rianote.flex.skin.KButton");
    }
</fx:Style>
<mx:Button label="我是halo组件" styleName="sparkButtonStyle"/>

是不是很容易呢?同样对于经常熟悉开发Flex SDK 3的程序员来说,上述代码一点都不陌生。
再让我们对比一下spark组件的写法:

<fx:Style>
Button { 
    skinClass: ClassReference("com.rianote.flex.skin.KButton"); 
}
</fx:Style>
<s:Button label="我是spark组件" skinClass="com.rianote.flex.skin.KButton" />

其实我们仅仅从sparkhalo共用一套自定义皮肤的方式得到一些信息:
Flex SDK 4(Gumbo)虽然在版本兼容上面并不是特别好,但是从这公用自定义皮肤的方式可以看出,Adobe Flex Team在兼容性方面还是花费了很大的力气。