加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flash – 如何在actionscript 3中计算给定十六进制颜色的阴影?

发布时间:2020-12-15 19:48:32 所属栏目:百科 来源:网络整理
导读:我需要一种方法来根据提供的颜色计算更轻的十六进制颜色.我意识到我可以使用颜色转换,但我需要实际值才能生成渐变. 解决方法 这里有一些东西从我的Color utils中拉出来.听起来像makeGradient可能对你有用. /** * Return a gradient given a color. * * @para
我需要一种方法来根据提供的颜色计算更轻的十六进制颜色.我意识到我可以使用颜色转换,但我需要实际值才能生成渐变.

解决方法

这里有一些东西从我的Color utils中拉出来.听起来像makeGradient可能对你有用.

/**
     * Return a gradient given a color.
     *
     * @param color      Base color of the gradient.
     * @param intensity  Amount to shift secondary color.
     * @return An array with a length of two colors.
     */
    public static function makeGradient(color:uint,intensity:int = 20):Array
    {
        var c:Object = hexToRGB(color);
        for (var key:String in c)
        {
            c[key] += intensity;
            c[key] = Math.min(c[key],255); // -- make sure below 255
            c[key] = Math.max(c[key],0);   // -- make sure above 0
        }
        return [color,RGBToHex(c)];
    }

    /**
     * Convert a uint (0x000000) to a color object.
     *
     * @param hex  Color.
     * @return Converted object {r:,g:,b:}
     */
    public static function hexToRGB(hex:uint):Object
    {
        var c:Object = {};

        c.a = hex >> 24 & 0xFF;
        c.r = hex >> 16 & 0xFF;
        c.g = hex >> 8 & 0xFF;
        c.b = hex & 0xFF;

        return c;
    }

    /**
     * Convert a color object to uint octal (0x000000).
     *
     * @param c  Color object {r:,b:}.
     * @return Converted color uint (0x000000).
     */
    public static function RGBToHex(c:Object):uint
    {
        var ct:ColorTransform = new ColorTransform(0,c.r,c.g,c.b,100);
        return ct.color as uint
    }

此外,不记得我从哪里得到这个,但这些静态函数将生成给定颜色的和声列表:

/**
     * Convert RGB bits to a hexcode
     *
     * @param r  Red bits
     * @param g  Green bits
     * @param b  Blue bits
     * @return A color as a uint
     */
    public static function convertToHex(r:uint,g:uint,b:uint):uint
    {
        var colorHexString:uint = (r << 16) | (g << 8) | b;
        return colorHexString;
    }

    /**
     * Get a series of complements of a given color.
     *
     * @param color   Color to get harmonies for
     * @param weight  Threshold to apply to color harmonies,0 - 255
     */
    public static function getHarmonies(color:uint,weight:Number):Array
    {
        var red:uint = color >> 16;
        var green:uint = (color ^ (red << 16)) >> 8;
        var blue:uint = (color ^ (red << 16)) ^ (green << 8);

        var colorHarmonyArray:Array = new Array();
        //weight = red+green+blue/3;

        colorHarmonyArray.push(convertToHex(red,green,weight));
        colorHarmonyArray.push(convertToHex(red,weight,blue));
        colorHarmonyArray.push(convertToHex(weight,blue));
        colorHarmonyArray.push(convertToHex(red,weight));
        colorHarmonyArray.push(convertToHex(weight,blue));

        return colorHarmonyArray;
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读