`
it_liuyong
  • 浏览: 100553 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Flex4 Spark组件ButtonBar设置图片

    博客分类:
  • flex
 
阅读更多
Flex4 Spark组件ButtonBar设置图片 (2012-02-23 16:51:11)转载▼标签: 杂谈 分类: flex 
主程序ButtonBarTest源代码如下:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
  xmlns:s="library://ns.adobe.com/flex/spark"
  xmlns:mx="library://ns.adobe.com/flex/mx" >
<fx:Declarations>
  <!--ButtonBar 数据源-->
  <s:ArrayCollection id="arr">
   <fx:Object label="Button" icon="{buttonIcon}" />
   <fx:Object label="ButtonBar" icon="{buttonBarIcon}" />
   <fx:Object label="CheckBox" icon="{checkBoxIcon}" />
   <fx:Object label="ColorPicker" icon="{colorPickerIcon}" />
  </s:ArrayCollection>
</fx:Declarations>
    <fx:Script>
        <![CDATA[
            [Bindable]
           [Embed(source="assets/test/buttonbar/Button.png")]
            private var buttonIcon:Class;

            [Bindable]
            [Embed(source="assets/test/buttonbar/ButtonBar.png")]
            private var buttonBarIcon:Class;

            [Bindable]
            [Embed(source="assets/test/buttonbar/CheckBox.png")]
            private var checkBoxIcon:Class;

            [Bindable]
            [Embed(source="assets/test/buttonbar/ColorPicker.png")]
            private var colorPickerIcon:Class;
        ]]>
    </fx:Script>
<fx:Style>
  @namespace s "library://ns.adobe.com/flex/spark";
  @namespace mx "library://ns.adobe.com/flex/mx";
  #buttonBar{
   font-size: 18;
  
  
  }
</fx:Style>
    <!-- The data provider has an "icon" property. -->
    <s:ButtonBar id="buttonBar"
   skinClass="test.skin.CustomButtonBarSkin"
            dataProvider="{arr}"
            height="64" width="100%"
   />

</s:Application>
自定义ButtonBarSkin   CustomButtonBarSkin源代码如下:

<?xml version="1.0" encoding="utf-8"?>
<s:Skin name="CustomButtonBarSkin"
  xmlns:fx="http://ns.adobe.com/mxml/2009"
  xmlns:s="library://ns.adobe.com/flex/spark"
  alpha.disabled="0.5">
<!-- states -->
<s:states>
  <s:State name="normal" />
  <s:State name="disabled" />
</s:states>

<fx:Metadata>
  <![CDATA[
   [HostComponent("spark.components.ButtonBar")]
  ]]>
</fx:Metadata>

<fx:Declarations>
  <fx:Component id="middleButton">
   <s:ButtonBarButton skinClass="test.skin.CustomButtonBarButtonSkin" />
  </fx:Component>
</fx:Declarations>

<s:DataGroup id="dataGroup" width="100%" height="100%">
  <s:layout>
   <s:ButtonBarHorizontalLayout gap="-1"/>
  </s:layout>
</s:DataGroup>

</s:Skin>

自定义ButtonBarButtonSkin  CustomButtonBarButtonSkin源代码如下:

<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2009/07/28/displaying-icons-in-a-spark-buttonbar-control-in-flex-4/ -->
<s:SparkSkin name="CustomButtonBarButtonSkin"
    xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:s="library://ns.adobe.com/flex/spark"
    minWidth="21" minHeight="21"
    alpha.disabledStates="0.5">
<!-- states -->
<s:states>
  <s:State name="up" />
  <s:State name="over" stateGroups="overStates" />
  <s:State name="down" stateGroups="downStates" />
  <s:State name="disabled" stateGroups="disabledStates" />
  <s:State name="upAndSelected" stateGroups="selectedStates, selectedUpStates" />
  <s:State name="overAndSelected" stateGroups="overStates, selectedStates" />
  <s:State name="downAndSelected" stateGroups="downStates, selectedStates" />
  <s:State name="disabledAndSelected" stateGroups="selectedUpStates, disabledStates, selectedStates" />
</s:states>

<!-- host component -->
<fx:Metadata>
  <![CDATA[
  [HostComponent("spark.components.ButtonBarButton")]
  ]]>
</fx:Metadata>

<fx:Script>
  <![CDATA[
   import spark.components.ButtonBar;
   import mx.events.FlexEvent;
   import spark.components.ButtonBarButton;
  
   protected function gr_creationComplete(evt:FlexEvent):void {
    var dataObj:Object = hostComponent.data;
    img.source = dataObj.icon;
    hostComponent.toolTip = dataObj.label;
   }
  
  
   static private const exclusions:Array = ["labelDisplay"];
  
   override public function get colorizeExclusions():Array {return exclusions;}
  ]]>
</fx:Script>

<!-- layer 1: shadow -->
<s:Rect left="0" right="0" bottom="-1" height="1">
  <s:fill>
   <s:SolidColor color="0x000000"
        color.downStates="0xFFFFFF"
        alpha="0.07"
        alpha.downStates="0.5" />
  </s:fill>
</s:Rect>

<!-- layer 2: fill -->
<s:Rect left="1" right="1" top="1" bottom="1">
  <s:fill>
   <s:LinearGradient rotation="90">
    <s:GradientEntry color="0xFFFFFF"
         color.selectedUpStates="0xBBBDBD"
         color.overStates="0xBBBDBD"
         color.downStates="0xAAAAAA"
         alpha="0.85"
         alpha.overAndSelected="1" />
    <s:GradientEntry color="0xD8D8D8"
         color.selectedUpStates="0x9FA0A1"
         color.over="0x9FA0A1"
         color.overAndSelected="0x8E8F90"
         color.downStates="0x929496"
         alpha="0.85"
         alpha.overAndSelected="1" />
   </s:LinearGradient>
  </s:fill>
</s:Rect>

<!-- layer 3: fill lowlight -->
<s:Rect left="1" right="1" bottom="1" height="9">
  <s:fill>
   <s:LinearGradient rotation="90">
    <s:GradientEntry color="0x000000" alpha="0.0099" />
    <s:GradientEntry color="0x000000" alpha="0.0627" />
   </s:LinearGradient>
  </s:fill>
</s:Rect>

<!-- layer 4: fill highlight -->
<s:Rect left="1" right="1" top="1" height="9">
  <s:fill>
   <s:SolidColor color="0xFFFFFF"
        alpha="0.33"
        alpha.selectedUpStates="0.22"
        alpha.overStates="0.22"
        alpha.downStates="0.12" />
  </s:fill>
</s:Rect>

<!-- layer 5: highlight stroke (all states except down) -->
<s:Rect left="1" right="1" top="1" bottom="1"
   excludeFrom="downStates">
  <s:stroke>
   <s:LinearGradientStroke rotation="90" weight="1">
    <s:GradientEntry color="0xFFFFFF"
         alpha.overStates="0.22"
         alpha.selectedUpStates="0.33" />
    <s:GradientEntry color="0xD8D8D8"
         alpha.overStates="0.22"
         alpha.selectedUpStates="0.33" />
   </s:LinearGradientStroke>
  </s:stroke>
</s:Rect>

<!-- layer 6: highlight stroke (down state only) -->
<s:Rect left="1" top="1" bottom="1" width="1"
   includeIn="downStates, selectedUpStates, overAndSelected">
  <s:fill>
   <s:SolidColor color="0x000000" alpha="0.07" />
  </s:fill>
</s:Rect>
<s:Rect right="1" top="1" bottom="1" width="1"
   includeIn="downStates, selectedUpStates, overAndSelected">
  <s:fill>
   <s:SolidColor color="0x000000" alpha="0.07" />
  </s:fill>
</s:Rect>
<s:Rect left="1" top="1" right="1" height="1"
   includeIn="downStates, selectedUpStates, overAndSelected">
  <s:fill>
   <s:SolidColor color="0x000000" alpha="0.25" />
  </s:fill>
</s:Rect>
<s:Rect left="1" top="2" right="1" height="1"
   includeIn="downStates, selectedUpStates, overAndSelected">
  <s:fill>
   <s:SolidColor color="0x000000" alpha="0.09" />
  </s:fill>
</s:Rect>

<!-- layer 7: border - put on top of the fill so it doesn't disappear when scale is less than 1 -->
<s:Rect left="0" right="0" top="0" bottom="0"
   width="69" height="20">
  <s:stroke>
   <s:LinearGradientStroke rotation="90" weight="1">
    <s:GradientEntry color="0x000000"
         alpha="0.5625"
         alpha.down="0.6375"
         alpha.selectedStates="0.6375" />
    <s:GradientEntry color="0x000000"
         alpha="0.75"
         alpha.down="0.85"
         alpha.selectedStates="0.85" />
   </s:LinearGradientStroke>
  </s:stroke>
</s:Rect>

<!-- layer 8: icon -->
<s:Graphic id="gr"
      creationComplete="gr_creationComplete(event);"
      horizontalCenter="0" verticalCenter="0">
  <s:BitmapImage id="img" />
</s:Graphic>
<!--layer 9: label-->
<s:Label id="labelDisplay"
    textAlign="center"
    verticalAlign="middle"
    maxDisplayedLines="1"
    horizontalCenter="0" verticalCenter="{gr.height}"
    left="10" right="10" top="2" bottom="2">
</s:Label>
</s:SparkSkin>

分享到:
评论

相关推荐

    Flex4 Spark皮肤

    ### Flex4 Spark皮肤详细制作讲解 #### 一、引言 在Flex4中,Adobe引入了新的皮肤系统,称为Spark Skin系统,旨在提供更高效、更灵活的UI设计能力。本篇文章将详细介绍如何利用Flex4中的Spark Skin进行控件样式的...

    Flex button和buttonBar的操作

    本篇我们将深入探讨Flex中的两种组件:Flex Button(按钮)和ButtonBar(按钮栏),以及如何操作它们。 Flex Button组件是最基本的交互元素之一,通常用于执行单一的用户操作。创建一个Flex按钮非常简单,只需在...

    Flex4皮肤资料

    在Flex4中,皮肤(skin)是一种用于控制UI组件外观的设计模式,允许开发者和设计师定制组件的视觉表现,而不必触及组件的核心功能代码。这不仅提高了开发效率,还实现了设计与逻辑的分离,使得UI设计更加灵活且易于...

    Flex常规控件和组件

    Flex 是 Adobe 开发的一种用于构建富互联网应用程序(RIA)的框架,它提供了丰富的组件库,使得开发者能够方便地创建交互式、动态的用户界面。在 Flex 中,控件和组件是构建用户界面的基本元素,它们提供了多种功能...

    ButtonBar的使用

    在Android开发中,ButtonBar是一种常见的布局组件,用于排列一系列按钮,通常出现在底部,提供用户交互。ButtonBar的设计目的是为了使界面更加整洁、规范,提高用户体验。本篇将深入探讨ButtonBar的使用,包括它的...

    Flex 3 组件实例与应用(2009版)

    ### Flex 3 组件实例与应用(2009版) #### 一、概述 《Flex 3 组件实例与应用》是一本针对初学者学习Adobe Flex 3框架及其组件的指南书籍。这本书由作者Dason编写,内容覆盖了Flex 3中的多种组件及其用法,并通过...

    Flex3.0

    7. **组件库扩展**:Flex 3.0组件库更加丰富,包含了大量新的UI组件,如SkinnableContainer、ButtonBar等,满足了更多样化的界面设计需求。 8. **国际化和本地化**:Flex 3.0增强了对多语言支持的处理,使开发者更...

    Flex UI组件使用全集

    ### Flex UI组件使用全集详解 #### 概述 本文档是基于阿树对Adobe Flex UI组件库的全面整理,并结合Adobe主页上提供的各种组件代码示例进行深度解析。Flex是一种用于构建高度交互式的Web应用的框架,尤其适用于创建...

    flex 4.6Css

    为了方便使用,将Spark组件单独剥离出来,使用方案如下:(只限于spark组件) 引入: add silvergreen-spark-2.0.swc to libs 使用(SWC方案): 在IDE(如:Flash Builder)里面,增加一个编译参数: -theme ../...

    《Flex 3 组件实例与应用(2009版)》(PDF)

    《Flex 3 组件实例与应用(2009版)》是一本深入解析Adobe Flex 3框架下组件使用与实践的专业书籍。本书由Dason精心整理于2009年2月,全面覆盖了Flex 3中的各种控件、容器、数据可视化组件以及效果、视图状态和过渡...

    flex + java 初学者 笔记 学习资料

    1. Button:按钮组件,可以设置文字和图标,图标通过`icon="@Embed('图片路径')"`来指定。 2. Checkbox:复选框,由文字和状态图标组成,继承自Button。 3. LinkButton:仅显示文字的无边框、无背景的按钮。 4. ...

    Flex中TabBar自动换行的实现

    在Flex开发中,TabBar组件通常用于展示多个选项卡,用户可以轻松地在不同视图之间切换。然而,默认情况下,Flex的TabBar组件不会自动换行,而是将所有选项卡排列在同一行,如果选项卡数量过多,超出容器宽度,部分...

    DevPower-buttonbar.zip

    4. **Setup.Lst** - 这可能是一个安装过程的列表文件,记录了安装过程中涉及的步骤、文件或设置。在安装软件时,这样的文件有助于跟踪安装进度和配置选项,确保正确无误地完成安装。 综上所述,"DevPower-buttonbar...

    flex4.5学习笔记

    **知识点18:设置Spark组件外观** - **Application皮肤组件**: 自定义应用级别的外观。 - **判断组件是否有skin**: 检查组件是否已经应用了皮肤。 - **FXG(FlashXMLGraphic)**: 一种用于描述矢量图形的格式。 - **向...

    flex 第一步的bug

    - **修正内容**:详细介绍了List组件不仅可以显示文本,还可以显示图片或其他类型的控件,并解释了如何通过`itemRenderer`来实现个性化展示。 **知识点解析**: - **List组件**:这是Flex中用于展示列表数据的重要...

    Flex前台分页

    这些组件可以通过设置属性(如dataProvider)来绑定数据集,并实现分页功能。 3. **分页控件(Paging Controls)**:为了使用户能够导航到不同的页面,我们需要创建或使用现成的分页组件,如ButtonBar或Pager。这些...

    Flex从入门到实践2

    它不内置导航组件,开发者需要自定义如LinkBar、TabBar、ButtonBar或ToggleButtonBar等组件来控制当前活动容器的切换。创建ViewStack容器通过`&lt;mx:ViewStack&gt;`标签实现,同时,为了在子容器间传递参数,通常会利用...

    Janus WinForms Controls v4.0

    内含Janus.Windows.UI.v4.dll、Janus.Windows.TimeLine.v4.dll、Janus.Windows.Schedule.v4.dll、Janus.Windows.Ribbon.v4.dll、Janus.Windows....Windows.CalendarCombo.v4.dll、Janus.Windows.ButtonBar.v4.dll...

Global site tag (gtag.js) - Google Analytics