Actionscript 3 从Flash中的HSL值获取颜色

Actionscript 3 从Flash中的HSL值获取颜色,actionscript-3,flash,colors,hsl,Actionscript 3,Flash,Colors,Hsl,我只想知道如何从flash中的HSL值中获取Color()对象或十六进制颜色值(uint) HSL背后的想法是,我可以将vaues从任何范围映射到色调范围(0-360),并得到相应的颜色 此外,我想控制色调值与“亮度”或“亮度”值分开。 饱和度始终为100% 我的代码的“基础”如下所示: function getHSL( var Hue, var Saturation, var Lightness ) { // Hue = 0 - 360, Satturation = 0 - 100, Ligh

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

HSL背后的想法是,我可以将vaues从任何范围映射到色调范围(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
}

所以,如果我想拥有这个功能,我可以在一个
中调用它(I=0;I试试Josh Whizzle的。它有你需要的所有东西,还有一些。

你需要将hsl转换成rgb,然后将rgb打包成十六进制。谷歌搜索“as3 hsl到rgb”你应该把你的答案作为答案,而不是问题的编辑。好的,谢谢,但我已经找到了。不过我会把这个标记为答案。链接似乎已经过时了
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;
}