Flex Spark皮肤定制
Flex3到Flex4,增加了Spark组件,这是Flex的一次重要升级,基本上组件全部重写了一套,为了保持向下兼容,出现了同一组件两套实现并存的现象,虽然说Spark组件中也可嵌入MX组件,但实际使用常会遇到些小麻烦,例如mx:Tree滚动条异常,透明背景无法监听鼠标事件等等,如果你使用定制的组件,写法稍有不规范,就会出现Spark下显示异常,比如之前定制的TWaver圆角文本输入框就是如此,不得不在Spark下重新实现。 Spark与MX组件的区别Spark最大的目的或许是方便Adobe兜售它的Flash Catalyst,当然这是个玩笑,Spark组件更加轻量,更易扩展。所有的Flex组件都从UIComponent继承,Spark组件也是如此,只不过它多了一层包装,从SkinnableComponent继承。MX中每个组件对应一个类,在Spark体系中,每个组件对应两个类,一个Component类,一个Skin类,例如按钮组件对应:spark.components.Button和spark.skins.spark.ButtonSkin,这种设计实现了组件行为逻辑与视图呈现的分离,就像将程序员和美工的工作分开一样,这也是MVC思想的产物。 Spark组件外观定制前面提到Flash Catalyst,这就是Adobe提供的组件外观可视化编辑工具,这个工具主要针对美工、设计师,对于习惯于写代码的程序员们也可以使用Flash Builder 4+来定制组件。 定制圆角文本输入框需求与分析我的需求很简单,文本框带圆角,其内放个图标,如同mac osx的搜索框。实现思路也很清晰,给矩形增加圆角,再多放个icon,定好位置,做好布局…… 定义组件类开始动手,按Spark组件定制的步骤,先定义组件类,再定义外观类。
定义外观类外观类描述组件的呈现,这里我们按Flash Builder提示创建MXML Skin,选择名称为CustomTextInputSkin,设置Host component为component.CustomTextInput, 完成向导,自动生成文件CustomTextInputSkin.mxml 生成的文件实际上是默认TextInputSkin的复本,找到下面的片段:
其中边框,填充,阴影,文本框都有对应的块,分别对边框、填充、阴影添加圆角,并在文本块增加了图片组件,修改如下:
使用运行测试定制的组件,代码如下:
运行界面代码下载CustomComponentSkinSource.zip 注意此代码使用的Flex SDK 4.5编译,需要在Flash Player 10.2+运行,当然你也可以稍微改造一下代码,使其兼容Flex SDK 4.0,如图标改s:Image为mx:Image:
参考文档http://www.unitedmindset.com/jonbcampos/2010/03/21/new-spark-skinning-workflow/ ? ? zhuanzi :http://www.cnblogs.com/twaver/archive/2011/07/21/2112824.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |