这次使用colorTranfrom主要用来将一个已有的过渡颜色映射到其他颜色条。发现这个colorTranfrom很好使用,于是简单研究了下

文档有说明:

使用 ColorTransform 类调整显示对象的颜色值。可以将颜色调整或颜色转换应用于所有四种通道:红色、绿色、蓝色和 Alpha 透明度。

其中颜色透明度的转换公式大致如下:

当 ColorTransform 对象应用于显示对象时,将按如下方法为每个颜色通道计算新值:

  • 新红色值 = (旧红色值 * redMultiplier) + redOffset
  • 新绿色值 = (旧绿色值 * greenMultiplier) + greenOffset
  • 新蓝色值 = (旧蓝色值 * blueMultiplier) + blueOffset
  • 新 Alpha 值 = (旧 Alpha 值 * alphaMultiplier) + alphaOffset

如果计算后任何一个颜色通道值大于 255,则该值将被设置为 255。如果该值小于 0,它将被设置为 0。

注意:

1、当设置color属性后,其将会对原位图对象所有颜色映射到当前颜色,只保留其透明度变化效果。

2、每次修改都是在原始位图基础上修改显示结果,并不会对原始位图产生修改。

附加:有兴趣的朋友可以研究下bitmapData.paletteMap方法。使用该方法可以对当前矩阵中的整体颜色映射到一个颜色组中,跟colorTranfrom设置color有点相反作用的感觉。

给个简单的demo示例:

<?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" minWidth="955" minHeight="600">
<fx:Script>
<![CDATA[
import mx.events.ColorPickerEvent;
import mx.events.SliderEvent; protected function slider1_changeHandler(event:SliderEvent):void
{ var colorTrans:ColorTransform = new ColorTransform;
colorTrans.redMultiplier = redMultiplierSlider.value;
colorTrans.greenMultiplier = greenMultiplierSlider.value;
colorTrans.blueMultiplier = blueMultiplierSlider.value;
colorTrans.alphaMultiplier = alphaMultiplierSlider.value; colorTrans.redOffset = redOffsetSlider.value;
colorTrans.greenOffset = greenOffsetSlider.value;
colorTrans.blueOffset = blueOffsetSlider.value;
colorTrans.alphaOffset = alphaOffsetSlider.value; imgTarget.transform.colorTransform = colorTrans;
objTarget.transform.colorTransform = colorTrans;
} protected function colorPicker_changeHandler(event:ColorPickerEvent):void
{
var colorTrans:ColorTransform = new ColorTransform;
colorTrans.color = event.color;
imgTarget.transform.colorTransform = colorTrans;
objTarget.transform.colorTransform = colorTrans;
} ]]>
</fx:Script>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<s:layout>
<s:VerticalLayout clipAndEnableScrolling="true"/>
</s:layout>
<s:Panel width="100%" height="300">
<s:layout>
<s:TileLayout horizontalAlign="center" verticalAlign="middle"
rowHeight="60" columnWidth="320" columnAlign="left" rowAlign="top"/>
</s:layout>
<s:HGroup>
<s:Label text="直接使用颜色Color:"/>
<mx:ColorPicker id="colorPicker" change="colorPicker_changeHandler(event)"/>
</s:HGroup>
<s:HGroup>
<s:Label text="红色系数redMultiplier:"/>
<mx:Slider width="150" height="30" id="redMultiplierSlider"
maximum="1" minimum="0" value="1" change="slider1_changeHandler(event)"/>
</s:HGroup>
<s:HGroup>
<s:Label text="绿色系数greenMultiplier:"/>
<mx:Slider width="150" height="30" id="greenMultiplierSlider" maximum="1" minimum="0" value="1" change="slider1_changeHandler(event)"/>
</s:HGroup>
<s:HGroup>
<s:Label text="蓝色系数blueMultiplier:"/>
<mx:Slider width="150" height="30" id="blueMultiplierSlider" maximum="1" minimum="0" value="1" change="slider1_changeHandler(event)"/>
</s:HGroup>
<s:HGroup>
<s:Label text="透明度alphaMultiplier:"/>
<mx:Slider width="150" height="30" id="alphaMultiplierSlider" maximum="1" minimum="0" value="1" change="slider1_changeHandler(event)"/>
</s:HGroup>
<s:HGroup>
<s:Label text="红色偏移redOffset:"/>
<mx:Slider width="150" height="30" id="redOffsetSlider" maximum="255" minimum="-255" value="0" change="slider1_changeHandler(event)"/>
</s:HGroup>
<s:HGroup>
<s:Label text="绿色色偏移greenOffset:"/>
<mx:Slider width="150" height="30" id="greenOffsetSlider" maximum="255" minimum="-255" value="0" change="slider1_changeHandler(event)"/>
</s:HGroup>
<s:HGroup>
<s:Label text="蓝色偏移redOffset:"/>
<mx:Slider width="150" height="30" id="blueOffsetSlider" maximum="255" minimum="-255" value="0" change="slider1_changeHandler(event)"/>
</s:HGroup>
<s:HGroup>
<s:Label text="alpha偏移redOffset:"/>
<mx:Slider width="150" height="30" id="alphaOffsetSlider" maximum="255" minimum="-255" value="0" change="slider1_changeHandler(event)"/>
</s:HGroup>
</s:Panel> <s:Group id="view">
<s:Image id="imgTarget" source="assets/img_colorTransform.jpg"/> <s:Group id="objTarget" width="300" height="300" x="500">
<s:Rect width="100%" height="100%">
<s:fill>
<s:RadialGradient>
<s:entries>
<s:GradientEntry color="0xff0000" alpha="1" ratio="0"/>
<s:GradientEntry color="0x00ff00" alpha=".7" ratio=".6"/>
<s:GradientEntry color="0x0000ff" alpha=".2" ratio="1"/>
</s:entries>
</s:RadialGradient>
</s:fill>
</s:Rect>
</s:Group>
</s:Group>
</s:Application>

  

Flex colorTranfrom使用说明的更多相关文章

  1. flex.css声明式布局

    flex.css能完美的运行在移动端的各种浏览器,甚至能运行在ie10+的各种PC端浏览器中 flex和data-flex flex.css 有两个版本,一个是flex.css一个是data-flex ...

  2. [转]Flash Player、AIR、Flex SDK 大全

    平时不断看到有朋友在各种论坛.空间.知道.群里求 Flash 平台各种版本的运行时(Flash Player)和SDK(Flex.AIR).今天就看到不下10次!所以决定把 Macromedia.Ad ...

  3. Flex Array内置排序方法的使用

    在Array类中,提供内置的排序方法.排序是在软件开发的过程中,经常遇到的问题.通过这些内置的方法,可以快速轻便的进行排序操作. Array类提供sort方法对Array实例进行排序.sort方法没有 ...

  4. UniGUI的布局使用说明

    (unigui的页面布局还是很强大的,基本什么的排版都能搞好.前面部分为原文章翻译,翻译不一定很准确,就能看吧,后面有使用说明,有什么不明白的欢迎加我QQ(910300653)一起交流学习) 一.布局 ...

  5. DBProxy 读写分离使用说明

    美团点评DBProxy读写分离使用说明   目的 因为业务架构上需要实现读写分离,刚好前段时间美团点评开源了在360Atlas基础上开发的读写分离中间件DBProxy,关于其介绍在官方文档已经有很详细 ...

  6. Flash&Flex大全

    官方在线帮助(没标英文的都是中文) 用于 Adobe Flash Platform 的 ActionScript 3.0 参考 更多参考使这样的链接下载离线版:http://help.adobe.co ...

  7. OpenCASCADE Expression Interpreter by Flex & Bison

    OpenCASCADE Expression Interpreter by Flex & Bison eryar@163.com Abstract. OpenCASCADE provide d ...

  8. Flex 布局教程:语法篇

    作者: 阮一峰 网页布局(layout)是CSS的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便 ...

  9. Flex 布局教程:实例篇

    该教程整理自 阮一峰Flexible教程 今天介绍常见布局的Flex写法.你会看到,不管是什么布局,Flex往往都可以几行命令搞定. 我的主要参考资料是Landon Schropp的文章和Solved ...

随机推荐

  1. 去掉Chrome手机版首屏的“推荐的文章”

    百度可得很多类似的文章,然而都是失效的,,比如此文,本文演示所使用的Chrome版本为59. 百度所得的解决办法都是同一个,排版,截图都是一样的,害我浪费了不少力气. 第一,转载文章未标明文章出处: ...

  2. Spring中BeanFactory和ApplicationContext的区别

    1. BeanFactory负责读取bean配置文档,管理bean的加载,实例化,维护bean之间的依赖关系,负责bean的生命周期. 2. ApplicationContext除了提供上述BeanF ...

  3. iOS开发——MJExtension复杂数组用法

    最近在看MJExtension的Demo,发现了一个plist文件直接转数组模型的方法.以前研究过但是浅尝辄止没有解决,这几天有时间,好好看了看,找到了解决办法,与大家分享. 如果大家的项目中有这种嵌 ...

  4. JavaScript数组api简单说明

    1.一个数组加上另一个(一些)数组,不会修改原数组只会返回新数组 arrayObject.concat(arrayX,arrayX,......,arrayX) 2.把数组按照指定字符串分离,不会修改 ...

  5. 科研不是比赛,而是一种对未知和完美的自我追求——跟邢波(Eric Xing)面对面聊科研

    编者按:6月26日,2014年国际机器学习大会(ICML)在北京国际会议中心完美落幕.作为机器学习领域两大顶尖年会之一,这是 ICML大会30多年来首次来到中国和远东,在国内的机器学习界震动不小.身为 ...

  6. javascript快速入门20--Cookie

    Cookie 基础知识 我们已经知道,在 document 对象中有一个 cookie 属性.但是 Cookie 又是什么?“某些 Web 站点在您的硬盘上用很小的文本文件存储了一些信息,这些文件就称 ...

  7. 【MySQL】海量量数据查询优化

    参考资料: mysql处理海量数据时的一些优化查询速度方法:http://www.cnblogs.com/lingiu/p/3414134.html mysql千万级大数据SQL查询优化:http:/ ...

  8. 【proxy agent资料】

    参考资料: GoAgent使用方法, 2015年最新FQ方法总结:http://www.bianlei.com/we-wanna-see-the-world/ 配置Android支持GAE Proxy ...

  9. REOBJECT structure

    REOBJECT structure   包含丰富编辑控件中的OLE或图像对象的信息. Syntax 语法 typedef struct _reobject { DWORD cbStruct; LON ...

  10. pickle和cPickle:Python对象的序列化(上)

    https://segmentfault.com/a/1190000002493548 pickle模块实现了一种算法,将任意一个Python对象转化成一系列字节(byets).此过程也调用了seri ...