ActionScript 类 > MovieClip > blendMode(MovieClip.blendMode 属性)

blendMode(MovieClip.blendMode 属性)
public blendMode : Object

此影片剪辑的混合模式。当影片剪辑位于屏幕上另一对象的上一层时,混合模式将影响影片剪辑的外观。

Flash Player 在影片剪辑的每一个像素上应用 blendMode 属性。每个像素都由三种原色(红色、绿色和蓝色)组成,每种原色的值介于 0x00 和 0xFF 之间。Flash Player 将影片剪辑中一个像素的每种构成颜色与背景中像素的对应颜色进行比较。例如,如果 blendMode 设置为 "lighten",则 Flash Player 将按钮的红色值与背景的红色值进行比较,然后使用两者中较亮的一种颜色作为显示颜色的红色成份的值。

下表将对 blendMode 设置进行说明。若要设置 blendMode 属性,您可以使用从 1 到 14 的整数或使用字符串。表中的插图表示:blendMode 值应用于交叠于屏幕对象 (1) 之上的圆形影片剪辑 (2)。





整数值
字符串值
插图
说明

1
"normal"

影片剪辑显示在背景之前。影片剪辑的像素值将覆盖背景的像素值。在影片剪辑为透明的区域,背景是可见的。

2
"layer"

强制为影片剪辑的预构成创建临时缓冲区。如果影片剪辑中有多个子对象,并且为子级选择了 "normal" 以外的其它 blendMode 设置,则该操作将自动完成。

3
"multiply"

将影片剪辑构成颜色的值与背景颜色的值相乘,然后通过除以 0xFF 进行标准化,从而得到较暗的颜色。此设置通常用于阴影和深度效果。

例如,如果影片剪辑中一个像素的某个原色(例如红色)与背景中的对应的像素的颜色的值均为 0x88,则相乘结果为 0x4840。除以 0xFF 将得到该原色的值 0x48,该值是比影片剪辑或背景颜色暗的阴影。

4
"screen"

将影片剪辑颜色的补色(反转色)与背景颜色的补色相乘,从而得到漂白效果。此设置通常用于产生加亮效果或用来删除影片剪辑的黑色区域。

5
"lighten"

选择影片剪辑和背景中相对较亮的原色值(相对较大的值)。此设置通常用于叠加类型。

例如,如果影片剪辑的某个像素的 RGB 值为 0xFFCC33,背景像素的 RGB 值为 0xDDF800,则显示像素的结果 RGB 值为 0xFFF833(因为 0xFF > 0xDD,0xCC < 0xF8 且 0x33 > 0x00 = 33)。

6
"darken"

选择影片剪辑与背景中相对较暗的原色值(相对较小的值)。此设置通常用于叠加类型。

例如,如果影片剪辑的某个像素的 RGB 值为 0xFFCC33,背景像素的 RGB 值为 0xDDF800,则显示像素的结果 RGB 值为 0xDDCC00(因为 0xFF > 0xDD,0xCC < 0xF8 且 0x33 > 0x00 = 33)。

7
"difference"

将影片剪辑与背景的原色进行比较,然后从较亮的原色减去较暗的原色。此设置通常用于得到更明亮的颜色。

例如,如果影片剪辑的某个像素的 RGB 值为 0xFFCC33,背景像素的 RGB 值为 0xDDF800,则显示像素的结果 RGB 值为 0x222C33(因为 0xFF - 0xDD = 0x22,0xF8 - 0xCC = 0x2C 且 0x33 - 0x00 = 0x33)。

8
"add"

将影片剪辑与背景的原色值相加,并应用 0xFF 的上限。此设置通常用于使两个对象间的加亮溶解产生动画效果。

例如,如果影片剪辑的某个像素的 RGB 值为 0xAAA633,背景像素的 RGB 值为 0xDD2200,则显示像素的结果 RGB 值为 0xFFC833(因为 0xAA + 0xDD > 0xFF,0xA6 + 0x22 = 0xC8 且 0x33 + 0x00 = 0x33)。

9
"subtract"

从背景原色的值中减去影片剪辑中原色的值,然后应用下限值 0。此设置通常用于使两个对象间的变暗溶解产生动画效果。

例如,如果影片剪辑的某个像素的 RGB 值为 0xAA2233,背景像素的 RGB 值为 0xDDA600,则显示像素的结果 RGB 值为 0x338400(因为 0xDD - 0xAA = 0x33,0xA6 - 0x22 = 0x84 且 0x00 - 0x33 < 0x00)。

10
"invert"

反转背景。

11
"alpha"

将影片剪辑每个像素的 Alpha 值应用于背景。这要求对父级影片剪辑应用 "layer" blendMode 设置。例如,在此插图中,父级影片剪辑是一个白色背景,它具有 blendMode = "layer"。

12
"erase"

根据影片剪辑的 Alpha 值擦除背景。这要求对父级影片剪辑应用 "layer" blendMode。例如,在此插图中,父级影片剪辑是一个白色背景,它具有 blendMode = "layer"。

13
"overlay"

根据背景的暗度调整每个位图的颜色。如果背景的亮度高于 50% 灰度,影片剪辑和背景颜色叠加后,将显示较亮的颜色。如果背景的亮度底于 50% 灰度,颜色将相乘,产生较暗的颜色。此设置通常用于获得阴影效果。

14
"hardlight"

根据影片剪辑的暗度调整每个位图的颜色。如果影片剪辑的亮度高于 50% 灰度,影片剪辑和背景颜色叠加后,将显示较亮的颜色。如果影片剪辑的亮度底于 50% 灰度,颜色将相乘,产生较暗的颜色。此设置通常用于获得阴影效果。


如果尝试将 blendMode 属性设置为任何其它值,则 Flash Player 会将该属性设置为 "normal"。

但是,如果将该属性设置为一个整数,则 Flash Player 会将此值转换为对应的字符串形式:

this.createEmptyMovieClip("mclip", this.getNextHighestDepth());
mclip.blendMode = 8;
trace (mclip.blendMode) // add

可用性:ActionScript 1.0;Flash Player 8

示例
下面的示例设置两个具有渐变填充的影片剪辑,并且每秒钟会更改前景中某个影片剪辑的混合模式。为使 "alpha" 混合模式显示出效果,mc2 影片剪辑的渐变包括一定范围的 Alpha 比例,并且 "layer" 混合模式要应用于父级影片剪辑 (this.blendMode="layer")。

    this.createEmptyMovieClip("mc1", this.getNextHighestDepth());
    this.createEmptyMovieClip("mc2", this.getNextHighestDepth());
    this.blendMode="layer";
    this.createTextField("blendLabel", this.getNextHighestDepth(), 50, 150, 100, 100)
   
    fillClip(mc1, 0x00AA00, 0x22FFFF, 100, 100)
    fillClip(mc2, 0xFF0000, 0x2211FF, 100, 50)
    mc2._x = 33;
    mc2._y = 33;
   
    var blendModeIndex = 0;
   
    setInterval(changeBlendMode, 1000);
    function changeBlendMode()
    {
        mc2.blendMode = blendModeIndex % 14 + 1 ;
            // values 1 - 14
    blendLabel.text = (blendModeIndex% 14 + 1) + ": " + mc2.blendMode;
        blendModeIndex++;
    }
   
    function fillClip(mc:MovieClip, color1:Number, color2:Number,
                alpha1:Number, alpha2: Number)
{
        matrix = {a:100, b:0, c:0, d:0, e:100, f:0, g:50, h:20, i:1};
        mc.beginGradientFill("linear", [color1, color2], [alpha1, alpha2], [0, 0xFF], matrix);
        mc.lineStyle(8,0x888888,100)
        mc.moveTo(0, 0);
        mc.lineTo(0, 100);
        mc.lineTo(100, 100);
        mc.lineTo(100, 0);
        mc.lineTo(0, 0);
        mc.endFill();
    }

猜你喜欢

转载自shine1200.iteye.com/blog/1330033