我们知道Gumbo将Component进行了逻辑和视图的分离--组件类与其相应的皮肤类。

要了解Skin,我们来看下几个重要的类!

1.FxComponent :组件在初始化的时候会调用loadSkin(),partAdded() 来加载Skin和组件部件。

2.Group:这是个功能很强大的容器类,属性content是个Object,Group能自动解析content,若是可视元素会将其加入到显示列表当中去。若是GraphicsElement,会为GraphicsElement assign画板(new Sprite()).再将画板加入显示列表。

3.Skin:类相当简单,继承Group。多加个fxComponent属性。

4.GraphicsElement:顶层类,用于各种绘制(shape,text ,Raster images etc..).

他们之间的关系如下图:

我们再看下绘制元素间的继承关系。

StrokedElement(笔画绘制):更新重绘的时候 会调用三个方法

1.beginDraw(g):设置笔画样式。stroke.draw(),

2.drawElements(g):开始绘制图形。

3.endDraw(): 结束绘制。

FilledElement(填充绘制)。 在设置样式的时候,会设置笔画和填充样式, fill.begin(g).

最后我们得出几个我们常用的绘制模型 Lline --线条,Rect-四方形,Ellipse-椭圆 ect...

这里我们关注下Path ,这个路径类和svg数据结合能使我们绘制任意形状的图形,这里只给个link,看看他的威力: www.degrafa.org/source/Car/Car.html

TextBox 和 TextGraphic是用于文字绘制。

关于笔画与填充。

从图中,我们看到笔画有三种

1.solidColorStroke (纯色笔画)

2 LinearGradientStroke(线性渐变笔画)

3 RadialGradientStroke(放射渐变笔画)

关于渐变色我们用类GradientEntry来表示各种渐变色。

填充的话相比多了种位图填充。

理解上面的话。Skin理解起来就简单了。

<?xml version="1.0" encoding="utf-8"?>
<SparkSkin xmlns="http://ns.adobe.com/mxml/2009" 
      minWidth="21" minHeight="21"
      alpha.disabled="0.5">
    <!--标记哪个组件FxXXX来加载此皮肤 -->
    <Metadata>
        [HostComponent("mx.components.FxXXX")]
    </Metadata>


    <!-- 表示绘制二色线性渐变填充的四方形 -->
    <Rect left="-1" right="-1" top="-1" bottom="-1" radiusX="2" radiusY="2">
        <fill>
            <LinearGradient rotation="90">
                    <GradientEntry color="0x000000" 
                                   alpha="0.01"/>
                    <GradientEntry color="0x000000" 
                                   alpha="0.07"/>
            </LinearGradient>
        </fill>
    </Rect>


    <!-- 表示绘制二色线性渐变笔画的椭圆 -->
    <Ellipse left="-1" top="-1" right="-1" bottom="-1">
        <stroke>
            <LinearGradientStroke rotation="90" weight="1">
                <GradientEntry color="0x000000" 
                               alpha="0.011"
                               alpha.downStates="0" />
                <GradientEntry color="0x000000" 
                               alpha="0.121" />
            </LinearGradientStroke>
        </stroke>
    </Ellipse>

    <!--绘制text -->
    <TextBox id="labelField"
             horizontalCenter="0" verticalCenter="1"
             left="10" right="10" top="2" bottom="2">
    </TextBox>
    
</SparkSkin>

转载于:https://www.cnblogs.com/kanlaa/archive/2009/06/14/1503147.html

Flex(Gumbo)中Skin解析相关推荐

  1. Flex Gumbo中如何自定义HSlider数据Tip样式的例子

    接下来的Flex Gumbo中如何通过skinClass样式,自定义HSlider数据Tip样式. 下面是main.mxml:<?xml version="1.0" enco ...

  2. Flex Gumbo中如何通过fontWeight样式,给TextBox设置粗体文字

    main.mxml <?xml version="1.0" encoding="utf-8"?> <Applicationname=" ...

  3. Flex开发中遇到未整理资源

    1)Loader类 (1)精通Flex 3.0――4.2.2 动态加载资源--Loader类 地址:http://blog.csdn.net/flex_program/article/details/ ...

  4. 演示和解析Flex布局中的各种属性

    文章目录 文章导读 一.justify-content center flex-start flex-end space-around space-evenly space-between 二.ali ...

  5. JAVA方法调用中的解析与分派

    JAVA方法调用中的解析与分派 本文算是<深入理解JVM>的读书笔记,参考书中的相关代码示例,从字节码指令角度看看解析与分派的区别. 方法调用,其实就是要回答一个问题:JVM在执行一个方法 ...

  6. flex页面中嵌入html页面

    使用flex-iframe插件 在gitHub上的地址如下 https://github.com/flex-users/flex-iframe 可以这样引入这个插件 <s:Application ...

  7. Bootstrap4+MySQL前后端综合实训-Day01-AM【实训安排、HBuilder下载及使用、双飞翼布局(圣杯布局)案例、CSS在线手册、flex布局中的对齐方式】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记] 目   录 实训安排 日常要求.项目要求 项目开发流程 HTML+CSS+JavaScript 基 ...

  8. Oracle中SQL解析的流程

    Oracle中SQL解析的主要流程: 我们说的游标概念比较复杂,它可以是客户端程序中的游标,服务进程中的私有游标,以及服务器端共享池里的共享游标.假设一个游标被打开了,一般来说它的共享游标信息(包括执 ...

  9. html子布局不超出父布局,详解flex布局中保持内容不超出容器的解决办法

    在移动端,flex 布局很好用,它能够根据设备宽度来自动调整容器的宽度,用起来很方便,已经越来越离不开它,但是最近在做项目的时候发现一个问题. 就是在一个设置了 flex:1 的容器中,如果文字很长, ...

最新文章

  1. wordpress page显示未找到页面_通过Avada主题了解网页基本结构和页面布局
  2. python流程控制语句-4.python流程控制语句介绍
  3. UA OPTI512R 傅立叶光学导论16 Nyquist-Shannon采样定理
  4. 如何制作高水平简历? 制作简历时需要注意的问题
  5. 阿里前CEO卫哲的万字长文:被马云骂醒,看透B2B 10大核心问题!
  6. Apollo进阶课程㉖丨Apollo规划技术详解——Understand More on the MP Difficulty
  7. 为什么川渝的超市要求顾客必须“要有妈”?
  8. 计算机信息工程专业985,信息工程学院
  9. 全局配置_中兴天机配置公布:智汇屏+全局黑暗模式
  10. Android开发之跟踪应用更新大小
  11. SameMovie HBOMax Video Downloader for Mac如何在 Mac 上下载 HBO Max 视频?
  12. 图解递归调用过程(Python)
  13. linux mint 8812ac网卡,kali虚拟机连接无线网卡comfast cf-812AC(Realtek 8812BU芯片)(不支持wlan0mon)...
  14. Java实现魔板拼图小游戏(完整版)
  15. 4种“附近的人”实现方式
  16. IT狂人职场路:揭秘华为百度高管如何炼成?
  17. 读《大学生上课为什么一定要认真听讲》有感
  18. 网友自制 MIUI 13 海报被疯传
  19. 解析DELLR710服务器迁移操作内容
  20. 100个优秀实用性网站

热门文章

  1. 阿里云配置服务器iis删除,服务器如何卸载iis7
  2. TFRecord和tf.Example
  3. android 求数组最大值,面试算法知识梳理(7) - 数组第四部分
  4. 如何在工作中保持稳定的情绪?——打工人必看!
  5. ESP8266 SPI通信
  6. paho架构_GitHub - yanzhangfeng/paho-mqtt: Eclipse Paho MQTT C/C++ client for Embedded platforms
  7. 干货推荐:Excel筛选工具的使用技巧
  8. 自定义ImageView,实现点击之后算出点击的是身体的哪个部位
  9. python waitkey_关于python下cv.waitKey无响应的原因及解决方法
  10. Word常用快捷指令