Flex colorTranfrom使用说明
这次使用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使用说明的更多相关文章
- flex.css声明式布局
flex.css能完美的运行在移动端的各种浏览器,甚至能运行在ie10+的各种PC端浏览器中 flex和data-flex flex.css 有两个版本,一个是flex.css一个是data-flex ...
- [转]Flash Player、AIR、Flex SDK 大全
平时不断看到有朋友在各种论坛.空间.知道.群里求 Flash 平台各种版本的运行时(Flash Player)和SDK(Flex.AIR).今天就看到不下10次!所以决定把 Macromedia.Ad ...
- Flex Array内置排序方法的使用
在Array类中,提供内置的排序方法.排序是在软件开发的过程中,经常遇到的问题.通过这些内置的方法,可以快速轻便的进行排序操作. Array类提供sort方法对Array实例进行排序.sort方法没有 ...
- UniGUI的布局使用说明
(unigui的页面布局还是很强大的,基本什么的排版都能搞好.前面部分为原文章翻译,翻译不一定很准确,就能看吧,后面有使用说明,有什么不明白的欢迎加我QQ(910300653)一起交流学习) 一.布局 ...
- DBProxy 读写分离使用说明
美团点评DBProxy读写分离使用说明 目的 因为业务架构上需要实现读写分离,刚好前段时间美团点评开源了在360Atlas基础上开发的读写分离中间件DBProxy,关于其介绍在官方文档已经有很详细 ...
- Flash&Flex大全
官方在线帮助(没标英文的都是中文) 用于 Adobe Flash Platform 的 ActionScript 3.0 参考 更多参考使这样的链接下载离线版:http://help.adobe.co ...
- OpenCASCADE Expression Interpreter by Flex & Bison
OpenCASCADE Expression Interpreter by Flex & Bison eryar@163.com Abstract. OpenCASCADE provide d ...
- Flex 布局教程:语法篇
作者: 阮一峰 网页布局(layout)是CSS的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便 ...
- Flex 布局教程:实例篇
该教程整理自 阮一峰Flexible教程 今天介绍常见布局的Flex写法.你会看到,不管是什么布局,Flex往往都可以几行命令搞定. 我的主要参考资料是Landon Schropp的文章和Solved ...
随机推荐
- [LOJ#2540][PKUWC2018]随机算法(概率DP)
场上数据很水,比较暴力的做法都可以过90分以上,下面说几个做法. 1. 暴力枚举所有最大独立集,对每个独立集分别DP.复杂度玄学,但是由于最大独立集并不多,所以可以拿90. 2. dp[S][k]表示 ...
- [BZOJ 2395] Time is money
Link: BZOJ 2395 传送门 Solution: 算是一类比较经典的模型: 即对于一类经典问题,每点由1个权值化为2个权值,最终求$sigma(val_1)*sigma(val_2)$ 对于 ...
- 【莫队算法】URAL - 2080 - Wallet
http://www.cnblogs.com/icode-girl/p/5783983.html 要注意卡片没有都被使用的情况. #include<cstdio> #include< ...
- 【kruscal】【最小生成树】【并查集扩展】bzoj3714 [PA2014]Kuglarz
ORZ:http://www.cnblogs.com/zrts/p/bzoj3714.html #include<cstdio> #include<algorithm> usi ...
- 8.6(java学习笔记)类加载过程及类加载器
一.类加载 1.加载 将class字节码加载到内存中,同时在方法区形成改类运行时数据结构. 同时在堆中产生一个Class对象,反射就是获取这个对象并对其进行操作. 2.链接 2.1验证:验证加载的类信 ...
- 命令行下的C++程序转换成VC的MFC程序需要注意的问题
在将命令行下的C++程序转换成MFC窗口程序时一般会提示下面这种错误: fatal error C1010: unexpected end of file while looking for prec ...
- iOS开发——使用基于Autolayout的ScrollView
问题描述: 在使用Autolayout布局方式对ScrollView进行布局时,如果你想做一个可以垂直方向滚动的九宫格类似这样: 拿一行来说,一定不要想当然的尝试去给一行图标进行均匀排列的操作(指 ...
- iOS消息传递机制
每个应用或多或少都由一些需要相互传递消息的对象结合起来以完成任务.在这篇文章里,我们将介绍所有可用的消息传递机制,并通过例子来介绍怎样在苹果的框架里使用.我们还会选择一些最佳范例来介绍什么时候该用什么 ...
- Android Studio 中修改versionCode跟versionName
在Android Studio 中修改versionCode 跟versionName最写了一个新版的软件准备发布到应用平台上,但是versionCode和versionName的值一直修改不成功,在 ...
- Telnet技术白皮书
转:http://www.cnpaf.net/Class/Telnet/200705/19978.html Telnet的应用不仅方便了我们进行远程登录,也给hacker们提供了又一种入侵手段和后门, ...