参考资料:https://github.com/NeoGuo/StarlingChinese/pull/8/files
http://www.starlinglib.com/asdoc/1.2/starling/display/BlendMode.html
BlendMode类提供了混合模式视觉效果的常量。
一个混合模式,总是由两个'Context3DBlendFactor'值来定义。一个混合因素代表一个特定的四个数值的数组。 这个数组是根据源颜色和目标颜色用混合公式计算的,公式如下:
result = source × sourceFactor + destination × destinationFactor
在这个公式里,源颜色是像素着色器的输出颜色,目标颜色是在上一次清除和绘制操作以后,颜色缓冲区中当前存在的颜色。
要注意的是,由于纹理类型的不同,混合因素产生产生的输出也不同。
纹理可能包含'预乘透明度'(pma),意思就是它们的RGB色值是根据它们的颜色值分别相乘得到的(目的是节省计算时间)。
基于'BitmapData'的纹理,会含有预乘透明度值,ATF纹理没有这个值。
因此,一个混合模式可能会根据pma的值而拥有不同的混合因素。
图中核心代码如下:
//继承这个显示对象的父级的混合模式。 //image.blendMode = BlendMode.AUTO; //显示对象显示在背景的前面。 image[0].blendMode = BlendMode.NORMAL; //停用混合,即禁止任何透明度。 image[1].blendMode = BlendMode.NONE; //当绘制渲染纹理的时候擦除背景。 image[2].blendMode = BlendMode.ERASE;
另
混合模式涉及将一个图像(基图像)的颜色与另一个图像(混合图像)的颜色进行组合来生成第三个图像,所得的图像是实际在屏幕上显示的图像。图像中的每个像素值都会被使用其他图像的对应像素值进行处理,以便在结果的同一位置生成一个像素值。
每个显示对象都有 blendMode 属性,可以将其设置为下列混合模式之一。以下是在 BlendMode 类中定义的常量。此外,还可以使用 String 值(在括号中),这些值是常量的实际值。
BlendMode.ADD ("add"):通常用于创建两个图像之间的动画变亮模糊效果。
BlendMode.ALPHA ("alpha"):通常用于在背景上应用前景的透明度。(在 GPU 呈现下不支持。)
BlendMode.DARKEN ("darken"):通常用于重叠类型。(在 GPU 呈现下不支持。)
BlendMode.DIFFERENCE ("difference"):通常用于创建更多变动的颜色。
BlendMode.ERASE ("erase"):通常用于使用前景 Alpha 剪掉(擦除)背景的一部分。(在 GPU 呈现下不支持。)
BlendMode.HARDLIGHT ("hardlight"):通常用于创建阴影效果。(在 GPU 呈现下不支持。)
BlendMode.INVERT ("invert"):用于反转背景。
BlendMode.LAYER ("layer"):用于强制为特定显示对象的预构成创建临时缓冲区。(在 GPU 呈现下不支持。)
BlendMode.LIGHTEN ("lighten"):通常用于重叠类型。(在 GPU 呈现下不支持。)
BlendMode.MULTIPLY ("multiply"):通常用于创建阴影和深度效果。
BlendMode.NORMAL ("normal"):用于指定混合图像的像素值覆盖基本图像的像素值。
BlendMode.OVERLAY ("overlay"):通常用于创建阴影效果。(在 GPU 呈现下不支持。)
BlendMode.SCREEN ("screen"):通常用于创建亮点和镜头眩光。
BlendMode.SHADER ("shader"):用于指定用于创建自定义混合效果的 Pixel Bender 着色器。有关使用着色器的详细信息,请参阅使用 Pixel Bender 着色器。(在 GPU 呈现下不支持。)
BlendMode.SUBTRACT ("subtract"):通常用于创建两个图像之间的动画变暗模糊效果。