`
smartinvoke
  • 浏览: 105820 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类

flex4自定义皮肤详解

阅读更多

在Flex4新增加了一个包:spark.skins,这个包里面只有一个类:SparkSkin,而我们(非美工的程序员)通过这个class来实现任意自定义控件的样式。
通过上述关系可以得出如下的结论:
1、SparkSkin是一个Group类型的容器。(它继承与Group)
2、是全部Spark类的基础类,也就说全部的mx.spark的可视化控件的外观全部都是SparkSkin的子类)

注意Skin,这个类是SparkSkin的父类,同时Skin继承与Group。

Skin:
是SparkSkin的父类,例如ButtonBarSkin就是Skin的子类,如果想要自定义这部分组件的样式,则需要使用Skin。

SparkSkin:
是全部Spark类的基础类,也就说全部的mx.spark的可视化控件的外观全部都是SparkSkin的子类。

综上所述,用SparkSkin和Skin都可达到同样的效果。

在Flex4中,我们只需要将这个button的样式继承与SparkSkin或者Skin,然后在其中加入一些想要的内容即可,请看以下代码:
<?xml version="1.0" encoding="utf-8"?>
<s:SparkSkin
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:fx="http://ns.adobe.com/mxml/2009">
<s:states>
<s:State name="up"/>
<s:State name="over"/>
<s:State name="down"/>
<s:State name="disabled"/>
</s:states>
<fx:Metadata>[HostComponent("spark.components.Button")]</fx:Metadata>
<s:Ellipse width="100%" height="100%">
<s:fill>
<s:SolidColor color="#FFFF00“ color.over="#00FF00" color.down="#FF0000"/>
</s:fill>
<s:stroke>
<s:SolidColorStroke color="0x00FFFF" />
</s:stroke>
</s:Ellipse>
<s:RichText id="labelElement"
fontFamily="Myriad Pro"
fontSize="11"
color="0xBBBBBB"
textAlign="center"
horizontalCenter="0"
verticalCenter="1"
width="100%">
   </s:RichText>
</s:SparkSkin>

我们可以用以下几个方式将这个样式应用:
1、
    Button{
           skinClass: ClassReference("cn.xuedi.SelfButton");
    }

2、myButton.setStyle( "skinClass", Class(cn.xuedi.SelfButton));

3、<Button skinClass="cn.xuedi.SelfButton" />

其中skinClass也是Flex4里面新增加的一个类,其作用就是设定当前这个组件的Skin。

主程序:
<?xml version='1.0' encoding='UTF-8'?>
<s:Application xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:fx="http://ns.adobe.com/mxml/2009"
height="254" width="576"
backgroundColor="#222222" >
<fx:Script>
<![CDATA[
import com.rianote.flex.skin.Button;
]]>
</fx:Script>
<s:Button x="54" y="56" skinClass="com.rianote.flex.skin.Button" height="32" width="77" label="Button"/>
</s:Application>

-----------------------------------------------------------------------------------------

以上代码解释:

1、
<s:SparkSkin
   xmlns:s="library://ns.adobe.com/flex/spark"
   xmlns:fx="http://ns.adobe.com/mxml/2009">
</s:SparkSkin>
含义:
如果要自定义控件样式,必须要要继承SparkSkin或者Skin。

2、
<fx:Metadata>[HostComponent("spark.components.Button")]></fx:Metadata>
含义:
我们要修改的是spark.components.Button的外形,Flex4新增了一个matadata tag:HostComponent
同时,Metadata也由原来的mx:变成了现在的fx,因为名称空间发生了改变。

3、
<s:states>
   <s:State name="up"/>
   <s:State name="over"/>
   <s:State name="down"/>
   <s:State name="disabled"/>
</s:states>
含义:
定义了Button的四种状态:up、down、over、disabled。这是Flex4新增的一种功能,用State来描述状态。
在Flex3的情况下,只能描述UI的不同状态,而在Flex4中,又赋予了State描述控件状态的功能。

4、
<s:Ellipse width="100%" height="100%"></s:Ellipse>
含义:
画一个圆形(椭圆形)的图形,而Ellipse也是Flex4新增一个包:spark.primitives里面的一个类。
spark.primitives里面定义了一些图形,例如:Ellipse、Rect、Path、Line等类。同样根据这些类名就可以得出是做什么用的。

5、
<s:fill>
   <s:SolidColor color="#FFFF00" color.over="#00FF00" color.down="#FF0000"/>
</s:fill>
含义:
设定填充的方式(SolidColor)填充颜色值FFFF00的颜色,color.over是指鼠标移动上去后的颜色,color.down是鼠标按下时候的颜色。
引申一下,还有color.up、color.display,通过这些值就可以描述四种状态时的颜色。
注意:SolidColor外层必须要有<s:fill>否则会出现错误。fill是填充的意思。

6、
<s:stroke>
   <s:SolidColorStroke color="0x0c0d0d" />
</s:stroke>
含义:
设定边线的颜色(SolidColorStroke)当然也可以设定诸如:color.up、color.display、color.down、color.over的颜色。
同样SolidColorStroke必须在stroke内部,而stroke的含义:设定边框。

7、我们在重新看一下这些代码的意义:
<s:Ellipse width="100%" height="100%">
   <s:fill>
       <s:SolidColor color="FFFF00" color.over="#00FF00" color.down="#FF0000"/>
   </s:fill>
   <s:stroke>
       <s:SolidColorStroke color="#00FFFF" />
   </s:stroke>
</s:Ellipse>
含义:
定义一个圆形(因为宽和高相等)然后填充一个0xFFFF00的颜色,并且设定鼠标移上、按下时的颜色值(color.over="#00FF00" color.down="#FF0000")
然后在定义一个边框,设定颜色为0x0c0d0d。

8、
<s:RichText id="labelElement"
   fontFamily="Myriad Pro"
   fontSize="11"
   color="0xBBBBBB"
   textAlign="center"
   horizontalCenter="0"
   verticalCenter="1"
   width="100%">
</s:RichText>
含义:
上面的代码定义了Button中可以显示文字的部分。注意,id必须设定为labelElement,否则出错。其他的样式可以自行设定了。

主程序:
<s:Button x="54" y="56" skinClass="com.rianote.flex.skin.Button" height="32" width="77" label="Button"/>

我们要注意的地方:skinClass,这也是Flex4新增加的一个类,专门用来设定当前皮肤的properties,请注意skinClass只适用于Spark包里面的可视化控件。

以上就是通过继承SparkSkin、Skin和skinClass的方式很简单的实现自定义组件的皮肤。

分享到:
评论

相关推荐

    Flex4自定义组件开发.pdf

    ### Flex4自定义组件开发详解 #### 一、Flex4自定义组件概述 Flex4(也称为Spark)是Adobe Flex框架的一个重要版本,它引入了许多新的特性,包括改进的组件库、性能优化以及更好的可定制性。在Flex4中,自定义组件...

    flex4很多种之前学习收集的各种文档

    flex4很多种之前学习收集的各种文档(Adobe - Flex 快速入门基础 Flex 组件的定位和布局,Flex+Css完全手册,flex中文帮助,Flex4.0API,flex教程,FLEX4_Flex4教程,flash_ActionScript_3.0实用教程,flex4自定义皮肤详解,...

    Flex4皮肤资料

    根据提供的信息,本文将深入解析Flex4中皮肤(skin)的概念、SparkSkin的使用方法以及如何通过自定义Skin来改变Flex应用界面的外观。 ### Flex4中的皮肤概念 在Flex4中,皮肤(skin)是一种用于控制UI组件外观的...

    Flex3.0RIA开发详解电子教程4

    本教程“Flex3.0 RIA开发详解电子教程4”显然是系列教程的一部分,旨在深入讲解Flex3.0的高级特性和开发实践。 1. **Flex SDK与Flash Player**: Flex SDK是开发Flex应用的基础,包含编译器、Flex Builder插件和其他...

    Flex 4.0 RIA开发详解讲义

    - **增强用户体验**:Flex提供丰富的组件库和自定义组件能力,使UI设计更具个性化。 - **完善的开发环境**:Flash Builder作为IDE,提供代码提示、调试和集成测试功能。 - **通用的配置环境**:Flex应用可以跨...

    Flex 3 RIA开发详解与精深实践

    1. ** skins和外观定制**:Flex 3允许开发者通过自定义皮肤来改变组件的外观,以满足不同设计需求。 2. ** States管理**:状态管理使开发者能为应用程序的不同场景定义和切换界面布局。 3. ** 动画和效果**:通过...

    《Flex 3 RIA开发详解与精深实践》2、3部分

    在组件库方面,第二部分详细讲解了Flex提供的各种预定义组件,如按钮、文本框、面板等,以及如何自定义组件以满足特定需求。此外,还涉及了事件处理和数据绑定机制,这是Flex中实现动态交互的关键。通过数据绑定,...

    Flex3.0RIA开发详解电子教程7

    4. Flex Component Framework:Flex组件框架是构建用户界面的基础,包括各种预定义的UI组件,如按钮、面板、数据网格等。开发者可以自定义组件,以满足特定的设计需求。 5. 数据绑定:Flex3.0引入了强大的数据绑定...

    Flex3.0RIA开发详解电子教程26

    本教程“Flex3.0 RIA开发详解电子教程26”旨在深入讲解Flex3.0的高级特性和实际应用技巧。 在Flex3.0中,开发者可以使用MXML和ActionScript两种语言进行编程。MXML是一种声明式语言,用于构建用户界面布局,而...

    Flex3.0RIA开发详解电子教程14

    4. **ActionScript3.0深入**:ActionScript是Flex的核心编程语言,深入理解其面向对象特性、错误处理、性能优化等方面的知识是必要的。 5. **高级动画和效果**:Flex内置了强大的动画引擎,能够创建复杂的过渡效果...

    flex教程实例详解

    “渲染器的详解”章节着重于Flex的渲染机制,讲解如何编写自定义渲染器以改变组件的显示方式。这为开发者提供了更大的自由度,使他们能实现更复杂、更具个性化的界面效果。 除了上述内容,这份Flex教程可能还包含...

    FLEX4 皮肤制作教程

    ### FLEX4 皮肤制作教程知识点详解 #### 一、SparkSkin介绍 1. **基本概念**: - SparkSkin是Adobe Flex 4 (Gumbo)框架中的一个关键类,用于自定义用户界面(UI)组件的外观。它提供了一种机制,允许开发者通过...

    Flex3.0RIA开发详解电子教程1

    1. ActionScript 3.0:Flex3.0主要编程语言,相比2.0版本,AS3提供了更强大的面向对象特性,性能显著提升,且与ECMAScript 4紧密接轨。 2. MXML:声明式语言,用于创建用户界面,与AS3协同工作,简化UI组件的创建和...

    Using_Flex_4.rar

    《使用Flex 4详解》 Flex 4,全称为Adobe Flex 4,是Adobe公司推出的一款强大的富互联网应用程序(Rich Internet Application,RIA)开发框架,主要用于构建交互式、图形丰富的Web应用。它基于ActionScript 3.0编程...

    Flex_4.0_RIA开发详解.rar

    Flex Builder 4,即现在的Flash Builder 4,是Flex 4.0的主要开发工具,它提供了强大的集成开发环境(IDE),包括代码编辑器、调试器、性能分析器以及对Flex和ActionScript的智能提示,极大地提高了开发效率。...

    flex4 权威教程 中文版 入门

    ### Flex4权威教程中文版入门知识点详解 #### 一、Flex4简介与环境搭建 - **Flex4概述**:Flex4是一种开源框架,用于构建跨平台的桌面应用程序和Web应用程序。它提供了强大的用户界面(UI)组件库以及高级数据可视...

    Flex_4.0_RIA开发详解

    文档"Flex_4.0_RIA开发详解.doc"可能包含了对Flex 4.0框架的深入讲解,包括以下关键知识点: 1. **Spark组件模型**:Flex 4.0引入了全新的Spark组件库,替代了原有的MX组件。Spark组件设计为轻量级、可扩展,支持...

    ArcGIS_Flex.rar_ArcGIS flex_ArcGIS_Flex_NavigationSkin.mxml_arc

    《ArcGIS Flex应用详解与NavigationSkin.mxml剖析》 ArcGIS Flex是Esri公司开发的一款基于Adobe Flex技术的地理信息系统(GIS)开发框架,它允许开发者构建富互联网应用程序(RIA),将复杂的地理信息数据和分析...

Global site tag (gtag.js) - Google Analytics