本文介绍了如何计算动作脚本3中给定的十六进制颜色的阴影?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要一种基于提供的方式来计算较浅的十六进制颜色的方法。我知道我可以使用颜色变换,但是我需要实际的值来生成一个渐变。
I need a way to calculate lighter hex color(s) based on a provided one. I realize I could use a color transform, but I need the actual value in order to generate a gradient.
推荐答案
拉出我的颜色utils。听起来像makeGradient可能对你有用。
Here's some stuff pulled out of my Color utils. Sounds like makeGradient might be useful to you.
/**
* 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:, g:, b:}.
* @return Converted color uint (0x000000).
*/
public static function RGBToHex(c:Object):uint
{
var ct:ColorTransform = new ColorTransform(0, 0, 0, 0, c.r, c.g, c.b, 100);
return ct.color as uint
}
我从这里得到这些静态函数将生成一个和谐列表给定一种颜色:
Also, can't recall where I got this from but these static function will generate a harmony list given a color:
/**
* 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, green, blue));
colorHarmonyArray.push(convertToHex(red, weight, weight));
colorHarmonyArray.push(convertToHex(weight, green, weight));
colorHarmonyArray.push(convertToHex(weight, weight, blue));
return colorHarmonyArray;
}
这篇关于如何计算动作脚本3中给定的十六进制颜色的阴影?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!