- 浏览: 1084727 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (695)
- 心情日记 (14)
- AS开发工具 (12)
- 文章转载 (99)
- AIR (5)
- 问题总结 (46)
- SWF格式 (7)
- 测试总结 (10)
- 外文资料 (9)
- 算法技术 (33)
- AS3常用开源库 (43)
- 源码范例 (102)
- FLEX (72)
- FLASH 优化 (33)
- 游戏开发 (49)
- 开发技术 (11)
- 工作应用 (34)
- AS3收集 (140)
- WebBase (0)
- 开发构想 (4)
- 设计模式 (2)
- 框架和框架范例 (19)
- RED5 (3)
- java开发 (3)
- JAVA (1)
- FLASH-3D (23)
- 3D (6)
- 书籍 (10)
- 业界信息资料 (3)
- C# (1)
- JavaScript (12)
- HTML5 (6)
- Flixel (1)
- D5Power RPG网页游戏引擎 (0)
- ColorMatrixFilter - 获得相应颜色的色调 函数 (0)
- Starling (0)
最新评论
-
老顽童203:
字体
水果忍者鼠标跟随特效制作[转载] -
hairball00:
[转] 放出超多的Flash组件源代码 -
he74552775:
flash AS3 RegExp简单功能用法(转) -
hanshuai1232000:
第四点,有利也有弊,等你做了大型的aprg,你就知道了
[转]位图数据内存优化 -
yangfantao:
太感谢
[转] 放出超多的Flash组件源代码
颜色矩阵
在flash中可以用矩阵方便的操作颜色。在flash8以前的版本,操作颜色的唯一途径就是通过修改颜色对象中红,绿,蓝三个通道的值,在Flash8,"颜色矩阵滤镜" ColorMatrixFilter (flash.filters.ColorMatrixFilter) 在颗粒等级上提供给你更好的控制方法。"颜色矩阵滤镜"为 4行5列的多维矩阵(20个元素的数组)。图 4 是 与"颜色矩阵滤镜"等同的矩阵。
图4. 与"颜色矩阵滤镜"等同的矩阵
红,绿,蓝通道的值由如下所示计算方法所决定:
CODE:
redResult = a[0] * srcR + a[1] * srcG + a[2] * srcB + a[3] * srcA + a[4]
greenResult = a[5] * srcR + a[6] * srcG + a[7] * srcB + a[8] * srcA + a[9]
blueResult = a[10] * srcR + a[11] * srcG + a[12] * srcB + a[13] * srcA + a[14]
alphaResult = a[15] * srcR + a[16] * srcG + a[17] * srcB + a[18] * srcA + a[19]
可以看出,第一行的值决定了红色值,第二行决定绿色,第三行蓝色,第四行是透明(Alpha)通道值。同样可以看出首四栏值是与红,绿,蓝,alpha通道值的乘积,而第五栏的值分别是和(偏移量)。注意每行的源值和结果值都是在0到255的区间内。因此即使各个通道的值小于0或大于255都会被强制到该区间内。我来举些例子说明它的原理。
果你想在红色通道加100(偏移量),将a[4]设置为100,如(图5) 。
图5. 红色值增加100
如果想使绿色通道加倍,将a[6]设为2,如(图6)
图6. 绿色加倍
如果你要使结果图像中的蓝色与原图的红色数量相等,将a[10]设为1, a[12]设为0 ,如(图7)
图7. 红色决定蓝色值
改变图像的亮度,你需要在每个颜色通道的值改变同样的数量。最简单的途径是在每个通道都设置相同的偏移量。偏移量为正时可以增加亮度为负时可以减小亮度。(图8) 是一个增加亮度的例子。
图8. 增加亮度
你也可以通过将每个颜色通道与一个值相乘按比例的改变亮度,大于1的增加亮度小于1减小亮度。
按照原理,将图像转换为灰度图,你需要将每个通道的部分设为等值。因为有三个通道,你可以将每个通道乘以0.33并将它们相加得到结果值。如(图9)
图9.灰度图矩阵
由于不同颜色通道的相对屏幕发光度,但是 确实有特殊的提供更加真实的灰度图的"亮度系数"值 。例如在PS里创建一个纯绿色块然后把它放在一个纯蓝色块 ,然后将图像灰度化,你会看到原来绿色的地方的灰色会比原来蓝色的区域要亮。
在Flash里使用这些矩阵,创建一个"颜色矩阵滤镜"的实例然后将它加入到一个影片剪辑(MovieClip)实例上。下面是一个使绿色加倍的例子:
CODE:
import flash.filters.ColorMatrixFilter;
var mat:Array = [ 1,0,0,0,0,
0,2,0,0,0,
0,0,1,0,0,
0,0,0,1,0 ];
var colorMat:ColorMatrixFilter = new ColorMatrixFilter(mat);
clip.filters = [colorMat];
"颜色矩阵滤镜"与一个已知的矩阵使用,你可以完成除了亮度和灰度之外复杂的颜色调整。调整对比度,饱和度和色相在 Flash 8种都成为了肯能。虽然在这里讨论这些话题与这篇文章有些远,但是足以说 Flash 8提供了一个以前任何版本都不能做到的颜色操作途径。
下面的flash可以看到在操作图像时结果矩阵是怎么改变的!
Flash:
http://www.adobe.com/devnet/flash/articles/matrix_transformations/ColorMatrixDemo.swf
在flash中可以用矩阵方便的操作颜色。在flash8以前的版本,操作颜色的唯一途径就是通过修改颜色对象中红,绿,蓝三个通道的值,在Flash8,"颜色矩阵滤镜" ColorMatrixFilter (flash.filters.ColorMatrixFilter) 在颗粒等级上提供给你更好的控制方法。"颜色矩阵滤镜"为 4行5列的多维矩阵(20个元素的数组)。图 4 是 与"颜色矩阵滤镜"等同的矩阵。
图4. 与"颜色矩阵滤镜"等同的矩阵
红,绿,蓝通道的值由如下所示计算方法所决定:
CODE:
redResult = a[0] * srcR + a[1] * srcG + a[2] * srcB + a[3] * srcA + a[4]
greenResult = a[5] * srcR + a[6] * srcG + a[7] * srcB + a[8] * srcA + a[9]
blueResult = a[10] * srcR + a[11] * srcG + a[12] * srcB + a[13] * srcA + a[14]
alphaResult = a[15] * srcR + a[16] * srcG + a[17] * srcB + a[18] * srcA + a[19]
可以看出,第一行的值决定了红色值,第二行决定绿色,第三行蓝色,第四行是透明(Alpha)通道值。同样可以看出首四栏值是与红,绿,蓝,alpha通道值的乘积,而第五栏的值分别是和(偏移量)。注意每行的源值和结果值都是在0到255的区间内。因此即使各个通道的值小于0或大于255都会被强制到该区间内。我来举些例子说明它的原理。
果你想在红色通道加100(偏移量),将a[4]设置为100,如(图5) 。
图5. 红色值增加100
如果想使绿色通道加倍,将a[6]设为2,如(图6)
图6. 绿色加倍
如果你要使结果图像中的蓝色与原图的红色数量相等,将a[10]设为1, a[12]设为0 ,如(图7)
图7. 红色决定蓝色值
改变图像的亮度,你需要在每个颜色通道的值改变同样的数量。最简单的途径是在每个通道都设置相同的偏移量。偏移量为正时可以增加亮度为负时可以减小亮度。(图8) 是一个增加亮度的例子。
图8. 增加亮度
你也可以通过将每个颜色通道与一个值相乘按比例的改变亮度,大于1的增加亮度小于1减小亮度。
按照原理,将图像转换为灰度图,你需要将每个通道的部分设为等值。因为有三个通道,你可以将每个通道乘以0.33并将它们相加得到结果值。如(图9)
图9.灰度图矩阵
由于不同颜色通道的相对屏幕发光度,但是 确实有特殊的提供更加真实的灰度图的"亮度系数"值 。例如在PS里创建一个纯绿色块然后把它放在一个纯蓝色块 ,然后将图像灰度化,你会看到原来绿色的地方的灰色会比原来蓝色的区域要亮。
在Flash里使用这些矩阵,创建一个"颜色矩阵滤镜"的实例然后将它加入到一个影片剪辑(MovieClip)实例上。下面是一个使绿色加倍的例子:
CODE:
import flash.filters.ColorMatrixFilter;
var mat:Array = [ 1,0,0,0,0,
0,2,0,0,0,
0,0,1,0,0,
0,0,0,1,0 ];
var colorMat:ColorMatrixFilter = new ColorMatrixFilter(mat);
clip.filters = [colorMat];
"颜色矩阵滤镜"与一个已知的矩阵使用,你可以完成除了亮度和灰度之外复杂的颜色调整。调整对比度,饱和度和色相在 Flash 8种都成为了肯能。虽然在这里讨论这些话题与这篇文章有些远,但是足以说 Flash 8提供了一个以前任何版本都不能做到的颜色操作途径。
下面的flash可以看到在操作图像时结果矩阵是怎么改变的!
Flash:
http://www.adobe.com/devnet/flash/articles/matrix_transformations/ColorMatrixDemo.swf
发表评论
-
HttpStatusConfig --一个HTTP 协议返回的 解析说明类
2012-04-18 16:40 0package guwanyuan.qicool.game ... -
HTTP/1.1协议规范(中文归纳版)
2012-04-18 16:39 2113一、介绍(introduction) ... -
[转] [Flash/Flex] 加载SWF性能VS影片剪辑性能
2012-03-15 22:29 0http://bbs.9ria.com/viewthread. ... -
关于富士通windows 7家庭普通板升级为windows 7旗舰版
2012-03-05 14:51 2015windows7普通家庭版不能一下升级到windows7旗舰版 ... -
水果忍者鼠标跟随特效制作[转载]
2012-03-01 16:06 2449实现这效果其实比较简单,主要是思路~! package ... -
请问如何才能让加载到一半的SWF不自动播放
2012-02-29 03:06 1538我用loader加载l=new Loader(); ... -
禁止输入文本可以粘贴
2012-02-10 13:15 2316//禁止输入文本粘贴动作 private static ... -
江湖情缘游戏里的跳的类
2012-02-08 23:55 0package com.app.role.montions ... -
[教程] 路点导航(Waypoint Navigation)
2011-12-31 00:51 0前言:这个不难,所以知道的童鞋不要喷,不知道的童鞋也不要怕,要 ... -
ARPG游戏引擎设计思路
2011-12-31 00:48 00.整体结构 下载 (32.92 KB ... -
Embed绑定XML与txt文本文件
2011-12-28 15:54 4648使用Embed标签可以将图片绑定到swf中并显示,那么我 ... -
Flash_Rich_Text_Editor(完美的富文本编辑器)
2011-12-27 17:55 0Flash_Rich_Text_Editor(完美的富文 ... -
弹弹堂测试
2011-12-08 04:21 0弹弹堂测试弹弹堂测试 -
一些DEMO
2011-11-28 17:42 0一些DEMO一些DEMO -
Matrix学习
2011-11-28 16:51 0Matrix学习 -
[转]三次贝尔曲线
2011-11-10 01:09 1923http://bbs.9ria.com/viewt ... -
[心得] 完美解决as3在ie中初始化时stageWidth和stageHeight为0的问题
2011-11-03 00:46 2938先看下面的一段脚本,这是比较经典的初始化脚本: pa ... -
五子棋算法详解
2011-10-31 04:14 0五子棋算法详解五子棋算法详解五子棋算法详解 -
[转]服务器端ActionScript语言参考
2011-10-31 00:29 0服务器端ActionScript语言参考 -
[转]FLASH与JS序列简单应用
2011-10-28 01:03 2086FLASH与JS序列简单应用 (一) 用swfob ...
相关推荐
在ActionScript 3 (AS3)中,颜色矩阵滤镜(ColorMatrixFilter)是一种强大的工具,用于对显示对象上的像素进行复杂色彩变换。这个滤镜允许开发者通过调整一个5x4的颜色矩阵来改变图像的色彩、亮度、对比度、饱和度等...
`ColorMatrixFilter`通常在ActionScript 3(AS3)和Flex中使用,允许开发者通过调整颜色矩阵来改变舞台上显示对象的颜色、亮度、对比度、饱和度等属性。在给定的示例中,我们有一个名为`ColorMatrixFilterSample....
### AS3中利用颜色矩阵进行颜色变换 在Adobe Flash Professional(现称为Animate)和ActionScript 3.0(简称AS3)中,颜色变换是一种常见的图像处理技术,主要用于调整图像的颜色、亮度、对比度等视觉效果。颜色...
总之,`ColorMatrixFilter`是AS3中一个强大的工具,它通过调整颜色矩阵来实现位图的颜色变换。通过理解和应用这个滤镜,开发者可以创造出各种各样的颜色效果,提升作品的艺术性和交互性。通过研究`...
Flash的Filter类提供了一系列图像特效,如模糊、渐变发光、颜色矩阵等。可以将这些滤镜应用于BitmapData对象,然后更新显示对象,以实现各种视觉效果。 5. 图像裁剪与缩放: BitmapData的`draw()`方法可以用于绘制...
AS3.0中的`ColorMatrixFilter`滤镜可以用来改变舞台上的颜色矩阵,从而实现雾的视觉效果。 创建雾的步骤可能包括以下几点: 1. **设置舞台背景**:选择一种能体现雾天氛围的颜色作为背景,例如淡灰色或淡蓝色,并...
通过调整颜色矩阵,你可以实现色彩调整、灰度转换、饱和度控制等多种效果。 总结起来,AS3中设置图形颜色的方式多样,可以根据需求选择合适的工具。对于已生成的图形,可以通过重新绘制或使用`BitmapData`的`...
- **颜色矩阵滤镜**:更高级的透明效果可以通过颜色矩阵滤镜(ColorMatrixFilter)实现,可以对整个显示对象应用复杂的透明和颜色变化。 2. **图形层的透明设置** - **图层透明度**:在Flash的时间轴上,可以直接...
例如,我们可以创建一个颜色矩阵来实现饱和度、亮度、对比度的调整,或者直接进行色彩转换。以下是一个简单的例子: ```actionscript var matrix:Array = [1, 0, 0, 0, redValue, 0, 1, 0, 0, greenValue, 0, 0...
同时,它也常与其它滤镜结合使用,如颜色矩阵滤镜(ColorMatrixFilter),以实现更复杂的图像处理。 在游戏开发中,模糊滤镜可以用来创建粒子系统中的雾化效果,或者在角色移动时模拟运动模糊,提升游戏的视觉体验...
我们可以使用渐变工具或者颜色矩阵滤镜来改变粒子的颜色,使其看起来像火焰。例如,粒子靠近“源头”时可能是较冷的蓝色,随着远离“源头”,颜色逐渐变为黄色和红色。 ```actionscript var colorMatrix:...
- **ColorMatrixFilter**:应用色彩矩阵滤镜,实现色调、饱和度和亮度的变化。 6. **时间线和事件处理**: 使用`enterFrame`事件监听器,可以在每一帧中更新图片状态,实现连续的过渡动画。当一个过渡完成时,...
默认情况下,`ColorMatrixFilter`对象会应用一个全灰度的矩阵,将所有颜色转换为灰度。 2. **应用滤镜到DisplayObject**: 假设我们有一个名为`myDisplayObject`的DisplayObject实例,我们可以这样做: ```...
例如,可以使用ColorMatrixFilter对图像应用颜色矩阵变换,实现色彩的调整、亮度和对比度的改变,甚至创建特殊效果如灰度或负片。另一个方法是使用BitmapData的displacementMap()函数,它可以创建基于像素位置的色彩...
* ColorMatrixFilter:是一个颜色矩阵滤镜,用于对显示对象进行颜色矩阵变换。 * ConvolutionFilter:是一个卷积滤镜,用于对显示对象进行卷积运算。 V. Error 类 AS3 显示对象结构图中还定义了一些错误类,例如:...
2. **ColorMatrixFilter**:这个滤镜允许你对图像的颜色进行精细控制,可以通过调整4x5的颜色矩阵来改变亮度、对比度、饱和度等。例如,增加图像的饱和度: ```actionscript var colorMatrix:ColorMatrixFilter = ...
2. **ColorMatrixFilter**:颜色矩阵滤镜,允许你通过自定义4x5颜色矩阵来精确调整图像的颜色和亮度。 3. **DropShadowFilter**:阴影滤镜,可以在对象后面添加一个或多个阴影,控制阴影的颜色、模糊度、角度和距离...
在AS3.0中,通过使用ColorMatrixFilter或GradientBitmapData对象,可以实现这种效果,使图片呈现出不同的色调和氛围。 4. **显示器LED效果**: 模拟LED显示器通常需要处理像素级别的亮度和颜色控制。AS3.0提供了...
- Matrix类还可以与其他类结合使用,如ColorMatrixFilter,进行颜色变换。 - Matrix类的一些常用方法包括`createGradientBox()`和`createBitmapData()`,它们分别用于创建渐变和位图数据。 - 可以通过矩阵相乘来...
利用ColorMatrixFilter,可以改变图片的色彩矩阵,创建丰富的颜色过渡。 9. **碎片效果**:图片分解成多个碎片散开,然后重组。这涉及到复杂的位图切割和动画控制,可能需要使用额外的库,如Flump或GreenSock。 10...