【问题标题】:Get Color From HSL Values in Flash从 Flash 中的 HSL 值获取颜色
【发布时间】:2013-07-26 19:42:49
【问题描述】:

我只想知道如何从 Flash 中的 HSL 值中获取 Color() 对象或十六进制颜色值 (uint)。´

HSL 背后的想法是,我可以将任何范围内的值映射到色调范围 (0 - 360) 并获得对应的颜色。

此外,我想控制色相值与“亮度”或“亮度”值分开。 饱和度始终为 100%。

我的代码的“基础”如下所示:

function getHSL( var Hue, var Saturation, var Lightness ) {
// Hue = 0 - 360, Satturation = 0 - 100, Lightness = 0 - 100

    // DO THE MAGIC

    return color // as3 Color() object
}

所以如果我有这个功能,我可以在for( i=0; i<360; i++) 循环中调用它,其中i 将是创建彩虹色谱的色调。

我已经完成了一些map() 函数来轻松处理“拉伸”色谱(例如不完全是 360 像素长的条形。

如果你们知道如何从 as3 中的 HSL 值生成颜色,请告诉我。

解决方案更新

function getColorFromHSL( h:Number, s:Number, v:Number ):Array {
    var r:Number = 0;
    var g:Number = 0;
    var b:Number = 0;
    var rgb:Array = [];

    var tempS:Number = s / 100;
    var tempV:Number = v / 100;

    var hi:int = Math.floor(h/60) % 6;
    var f:Number = h/60 - Math.floor(h/60);
    var p:Number = (tempV * (1 - tempS));
    var q:Number = (tempV * (1 - f * tempS));
    var t:Number = (tempV * (1 - (1 - f) * tempS));

    switch(hi)
    {
        case 0: r = tempV; g = t; b = p; break;
        case 1: r = q; g = tempV; b = p; break;
        case 2: r = p; g = tempV; b = t; break;
        case 3: r = p; g = q; b = tempV; break;
        case 4: r = t; g = p; b = tempV; break;
        case 5: r = tempV; g = p; b = q; break;
    }

    rgb = [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
    return rgb;
}

【问题讨论】:

  • 您需要将 hsl 转换为 rgb,然后将 rgb 打包为十六进制。谷歌搜索“as3 hsl to rgb”应该会让你到达那里。也看看mr.doob的color utils
  • 您应该将您的解决方案添加为答案,而不是作为问题的编辑。

标签: actionscript-3 flash colors hsl


【解决方案1】:

试试 Josh Whizzle 的 ColorMathUtil.as。它有你需要的一切,还有一些。

【讨论】:

  • 好吧,谢谢,但我已经找到了。但是我会将此标记为答案。
  • 链接似乎已过期
猜你喜欢
  • 1970-01-01
  • 2011-05-04
  • 1970-01-01
  • 1970-01-01
  • 2015-08-31
  • 2011-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多