I Love China

技术·人生

技术服务生活
繁體
6月 6th, 2007

[as3][翻译]使用混合模式(14种)

混合模式就是把一个图像(基图像)的颜色跟另一个图像(混合图像)一起组合成第三种图像——结果图像就是屏幕上显示的实际图像。一个图像中的每一个像素都会和其他图像中对应的像素一起作用来生成最终结果中相同位置处的像素值。
每个display对象都有blendMode属性,它可以设置成下面的值之一。在BlendMode类中定义了一些相关的常量。当然了,你可以直接使用这些常量的实际值:一些字符串。
以下面两个图像为例,我们在圆形(2)上应用blendMode,它将叠在另一个图像(1)上
blendmode-0a.jpgblendmode-0b.jpg
BlendMode.ADD (”add”):
效果如下:
blendModeadd
把display对象的颜色值加在背景上,最大值是0xFF。通常用来在两个图像之间创建一种发光溶解的动画效果。比如,如果一个display对象有一个像素点的颜色RGB值是0xAAA633,背景像素的RGB值是0xDD2200,混合后的RGB值是0xFFC833(因为0xAA + 0xDD > 0xFF,0xA6 + 0×22 = 0xC8,0×33 + 0×00 = 0×33)。

BlendMode.ALPHA (”alpha”):通常用于把前景的透明度应用到背景上。
效果如下:
blend alpha
把display对象上每个像素都相对背景设为透明的。这需要父级display对象的blendMode设置成BlendMode.LAYER。比如,在上面的示例图中,是一个白色背景,blendMode = BlendMode.LAYER。
BlendMode.DARKEN (”darken”): 通常用于叠加。
效果如下:
blendmode-6.jpg
选择display对象颜色和背景颜色中更暗的那个(也就是值更小的那个)。这个设置通常用于叠加的情况。比如如果display对象某像素的RGB值是0xFFCC33,背景像素的RGB值是0xDDF800,那么最终显示的RGB值就是0xDDCC00(因为0xFF > 0xDD,0xCC < 0xF8,0x33 > 0×00)。

BlendMode.DIFFERENCE (”difference”): 通常用于创建更多跳动的颜色。
效果如下:
blendmode-7.jpg
比较display对象和它的背景对象爱你该的颜色值,并用亮的值减去暗的值。这个设置通常用于跳动较大的颜色。比如,如果display对象像素RGB值是0xFFCC33,背景像素的RGB值是0xDDF800,那么最终显示的结果RGB值就是0×222C33(因为0xFF- 0xDD = 0×22, 0xF8 - 0xCC = 0×2C,0×33 - 0×00 = 0×33)。

BlendMode.ERASE (”erase”):通常用于使用前景alpha擦掉背景中的一部分。
效果如下:
blendmode-12.jpg
基于display对象的alpha值擦去背景上的部分。这需要把父display对象的blendMode设置成BlendMode.LAYER。比如上图中的父display对象就有一个白色背景,blendMode = BlendMode.LAYER。
BlendMode.HARDLIGHT (”hardlight”):通常用于创建阴影效果。
效果如下:
blendmode-14.jpg
根据display对象的暗度调整每个像素的颜色。如果比灰度50%亮,display对象和背景的颜色将选更亮的。如果比弧度50%暗,那么颜色将相乘,结果将更暗。这个设置主要用于阴影效果。
BlendMode.INVERT (”invert”): 用于反转背景。
效果如下:
blendmode-10.jpg
反转背景。
BlendMode.LAYER (”layer”): 用于强制为一个特定的display对象的预构成创建临时缓冲区。
效果如下:
blendmode-2.jpg
强制为display对象创建一个透明组。也就是说在处理display对象前先把它放到临时缓冲区中。如果display对象使用了缓存或者它是一个包含了至少有一个子对象的blendMode设置不是BlendMode.NORMAL的话,这个处理将是自动的完成的。
BlendMode.LIGHTEN (”lighten”): 通常用于重叠的情况。
效果如下:
blendmode-5.jpg
选择display对象和背景中颜色更亮的那个(颜色值高的那个)。比如,如果display对象某像素的RGB值是0xFFCC33,背景对应像素的RGB值是0xDDF800,那么最终显示的结果RGB就是0xFFF833(因为0xFF > 0xDD, 0xCC < 0xF8, 0x33 > 0×00)。

BlendMode.MULTIPLY (”multiply”): 通常用于创建阴影和深度效果。
效果如下:
blendmode-3.jpg
用display对象的颜色乘以背景颜色,然后通过除以0xFF格式化它,结果将使更暗的颜色。比如,如果display对象的像素和背景对应的像素颜色组成中(比如R部分)都是0×88,相乘之后是0×4840,除以0xFF后的值是0×48,它比diplay对象和背景颜色中对应部分都暗。

BlendMode.NORMAL (”normal”): 用于指定混合图像的像素值覆盖基图像的像素值。
效果如下:
blendmode-1.jpg
display对象显示在背景之前。display对象像素的颜色值将覆盖背景的。如果display对象是透明的,那么背景将显示出来。

BlendMode.OVERLAY (”overlay”): 通常用来创建阴影效果。
效果如下:
blendmode-13.jpg
根据背景的暗度调整每个像素的颜色。如果背景比灰度50%亮,选择display对象和背景中颜色更亮的那个。如果背景比灰度50%暗,颜色相乘,结果将更暗。

BlendMode.SCREEN (”screen”):
效果如下:
blendmode-4.jpg
用display对象反转的颜色乘以背景反转的颜色,得到漂白的效果。通常用于高光或者删掉display对象中黑色区域。

BlendMode.SUBTRACT (”subtract”):通常用于在两个图像间创建一个变暗相溶的效果。
效果如下:
blendmode-9.jpg
用display对象颜色各部分中减去背景颜色的值,最小值是0。比如,如果display对象某像素的RGB值是0xAA2233,背景像素的RGB值是0xDDA600,那么最终显示的RGB值就是0×338400(因为0xDD - 0xAA = 0×33, 0xA6 - 0×22 = 0×84, 0×00 - 0×33 < 0×00)

随机文章:

Leave a Reply