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 ...
随机推荐
- luogu P1623 [CEOI2007]树的匹配Treasury
题目链接 luogu P1623 [CEOI2007]树的匹配Treasury 题解 f[i][0/1]表示当前位置没用/用了 转移暴力就可以了 code // luogu-judger-enable ...
- [CF983D]Arkady and Rectangles
题意:按顺序在坐标轴上画$n$个颜色为$1\cdots n$的矩形(数字大的颜色覆盖数字小的颜色),问最后能看到多少种颜色 先离散化,然后考虑扫描线+线段树 线段树每个节点用一个set存覆盖整个区间的 ...
- 【博弈论】【SG函数】【找规律】Gym - 101147A - The game of Osho
以后这种题还是不能空想,必须打个表看看,规律还是比较好找的……具体是啥看代码.用SG函数暴力的部分就不放了. #include<cstdio> using namespace std; i ...
- 【分块】【树状数组】bzoj3744 Gty的妹子序列
离散化,分块. 预处理出:ans[i][j] 第i块到第j块的逆序对数. f[i][j] 第1~i块中大于j的数的个数. g[i][j] 第1~j块中小于j的数的个数. 每次询问时对于整块部分可以O( ...
- 如何在mac中通过命令行使用sublime
ln -s "/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl" ~/bin/subl 后续就可以通过 ...
- C#将json字符串解析成对象
首先我们在客户端生成json字符串,通过ajax把该字符串传到服务器端 //这是一个以id,email,age的json字符串 var jdata="[{\"id\&quo ...
- linux之touch命令修改文件的时间戳
功能:对已经存在文件的时间进行修改,存取时间(access time).修改时间(modification time).对不存在的文件,进行创建新的空白文件. 语法:touch [选项] 文件 ...
- sql获取汉字的拼音首字母的函数
ql获取汉字的拼音首字母 if exists (select * from sysobjects where id = object_id(N'[fn_ChineseToSpell]') and ...
- ElasticSearch 数据类型
1.范围数据类型 支持以下范围类型: integer_range : 一系列带符号的32位整数,最小值为,最大值为 float_range:一系列单精度32位IEEE 754浮点值. long_ran ...
- BIO的简单Demo
package jesse.test1; import java.io.BufferedReader; import java.io.IOException; import java.io.Input ...