• Flash/Flex学习笔记(21):利用colorTransform改变对象的颜色及透明度


    transform是flash.Display.DisplayObject的属性之一,而colorTransform又是transform的属性,这也就意味着几乎所有对象都可以使用colorTransform属性

    这是官方的解释:

    当 ColorTransform 对象应用于显示对象时,将按如下方法为每个颜色通道计算新值:

    新红色值 = (旧红色值 * redMultiplier) + redOffset
    新绿色值 = (旧绿色值 * greenMultiplier) + greenOffset
    新蓝色值 = (旧蓝色值 * blueMultiplier) + blueOffset
    新 Alpha 值 = (旧 Alpha 值 * alphaMultiplier) + alphaOffset (注:本人测试下来,好象这一行公式没啥作用)
    如果计算后任何一个颜色通道值大于 255,则该值将被设置为 255。 如果该值小于 0,它将被设置为 0。

    用这个东西可以改变几乎任何对象的R,G,B颜色分量以及透明度,说得通俗点:可以把红车换成绿车,或者把黑脸变白脸.下面是示例代码:

    view source

    print?

    01
    txtRedMultiplier.addEventListener(Event.CHANGE,ChangeHandler);

    02
    txtGreenMultiplier.addEventListener(Event.CHANGE,ChangeHandler);

    03
    txtBlueMultiplier.addEventListener(Event.CHANGE,ChangeHandler);

    04
    txtAlphaMultiplier.addEventListener(Event.CHANGE,ChangeHandler);

    05

    06
    txtRedOffset.addEventListener(Event.CHANGE,ChangeHandler);

    07
    txtGreenOffset.addEventListener(Event.CHANGE,ChangeHandler);

    08
    txtBlueMultiplier.addEventListener(Event.CHANGE,ChangeHandler);

    09
    txtAlphaMultiplier.addEventListener(Event.CHANGE,ChangeHandler);

    10

    11
    function ChangeHandler(e:Event) {

    12
    var redMultiplier:Number=txtRedMultiplier.value;

    13
    var greenMultiplier:Number=txtGreenMultiplier.value;

    14
    var blueMultiplier:Number=txtBlueMultiplier.value;

    15
    var alphaMultiplier:Number=txtAlphaMultiplier.value;

    16

    17
    var redOffSet:Number=txtRedOffset.value;

    18
    var greenOffSet:Number=txtGreenOffset.value;

    19
    var blueOffSet:Number=txtBlueOffset.value;

    20
    var alphaOffSet:Number=txtAlphaOffset.value;

    21

    22
    //trace("redMultiplier=" + redMultiplier);

    23
    //trace("greenMultiplier=" + greenMultiplier);

    24
    //trace("blueMultiplier=" + blueMultiplier);

    25
    //trace("alphaMultiplier=" + alphaMultiplier);

    26

    27
    var color:ColorTransform = new ColorTransform(redMultiplier,

    28
    greenMultiplier,

    29
    blueMultiplier,

    30
    alphaMultiplier,

    31
    redOffSet,

    32
    greenOffSet,

    33
    blueOffSet,

    34
    alphaOffSet);

    35

    36
    R.transform.colorTransform = 

    37
    G.transform.colorTransform = 

    38
    B.transform.colorTransform = 

    39
    RGB.transform.colorTransform = 

    40
    img.transform.colorTransform = color;

    41
    }

    42
    ChangeHandler(null);

    43
    stop();

    从该示例中也可以看出,如果要消除一张图片颜色中的红色分量,只要将redMultiplier设置为0即可,不过红色分量消除后,其值变为0,即原来红色的部分会变成黑色,如果想把纯红换成纯绿,还要再把greenOffSet设置为255

  • 相关阅读:
    嵌入式整体框架——总结
    DSP Bios记忆
    三遥
    usb设备 配置 接口 端点
    ARM, MIPS, Power PC的比较
    STM32 IAP
    FSMC 总结
    BCD码与十进制的相互转换
    读 “cortexM3” 权威指南 小记(一)
    crc校验码的16 32位 查表法 算法记载
  • 原文地址:https://www.cnblogs.com/happysky97/p/1884519.html
Copyright © 2020-2023  润新知