AS3检查颜色代码类似?

时间:2014-05-07 16:28:55

标签: actionscript-3 colors

您可以查看代码与其他颜色的相似程度吗? 0xFFFFFF类似于0xFBFBFB然后改变颜色。

我不确定颜色代码是如何工作的,所以如果你知道代码的提示,可以请分享

1 个答案:

答案 0 :(得分:3)

确定颜色之间接近度的一种简单方法是对每个颜色分量执行此操作。 在AS3中,颜色是一个包含3个组件的数字:红色,绿色和蓝色(有时候第四个组件用于透明度 - alpha)

每个组件包含在1个字节中,值为0到255.(0x00到0xFF) 这是从颜色本身获取每个颜色分量的方法:

var red:int = (color & 0xFF0000) >>> 16;
var green:int = (color & 0xFF00) >>> 8;
var blue:int = color & 0xFF;

获得每种颜色的颜色成分后,可以将它们2比2进行比较,然后将结果合并:

var red_proximity = Math.abs(red1 - red2);
var green_proximity = Math.abs(green1 - green2);
var blue_proximity = Math.abs(blue1 - blue2);

var color_proximity = red_proximity + green_proximity + blue_proximity;

结果将是0到765之间的数字; 0表示颜色完全相同,765表示它们完全不同。 (请注意,我使用Math.abs()来确保接近值始终为正。)

现在的最后一步是选择一个阈值来确定颜色是否“太近”。所选择的值通常是任意的,因此请测试几个并选择。例如,我使用值'84'。

if (color_proximity < 84) {
  // color is too close : change it
} else {
  // color is okay : do nothing ?
}

这只是一种方法,如果你必须玩很多颜色,在网上搜索一下其他算法;它总是有用的。