здесь нужна система не RGB а HSV (HSL)...
по ней все легко и просто получается :)
кто найдет полное объяснения какого-нибудь способа перевода rgb <--> hsl, будет тому щастье :) я не нашел...
вот. код не мой, где взял - не помню :)
почему из ржб в хсв тут переводится именно так - я не понимаю...

Код:
// FULL GRADIENT FILL EXAMPLE
//
_root.createEmptyMovieClip("FColorWheel", 1);
FColorWheel.hex = function(nmbr, base) {
var hexStr = "ABCDEF";
var hexVal = Math.round(nmbr*255/base);
dig1 = hexVal%16;
dig2 = (hexVal-dig1)/16;
if (dig1>9) {
dig1 = hexStr.charAt(dig1-10);
}
if (dig2>9) {
dig2 = hexStr.charAt(dig2-10);
}
hexVal = dig2.toString()+dig1.toString();
return hexVal;
};
//
FColorWheel.hsvToRGB = function(h, s, v) {
var r, g, b, i, f, p, q, t;
if (s == 0) {
r = g=b=v;
}
if (h == 360) {
h = 0;
}
h /= 60;
i = Math.floor(h);
f = h-i;
p = v*(1-s);
q = v*(1-(s*f));
t = v*(1-(s*(1-f)));
if (i == 0) {
r = v;
g = t;
b = p;
} else if (i == 1) {
r = q;
g = v;
b = p;
} else if (i == 2) {
//
r = p;
g = v;
b = t;
} else if (i == 3) {
r = p;
g = q;
b = v;
} else if (i == 4) {
r = t;
g = p;
b = v;
} else if (i == 5) {
r = v;
g = p;
b = q;
}
this.red = this.hex(r*255, 255);
this.green = this.hex(g*255, 255);
this.blue = this.hex(b*255, 255);
this.hexColor = "0x"+this.red+this.green+this.blue;
return this.hexColor;
};
//
FColorWheel.drawWheel = function(radius, centerX, centerY, s, b) {
for (var i = 0; i<=360; i++) {
angle0 = (i/180)*Math.PI;
angle1 = ((i+1)/180)*Math.PI;
c = this.hsvToRGB(360-i, s, b);
with (this) {
colors = [0xFFFFFF, Number(c)];
alphas = [100, 100];
ratios = [0, 0xFF];
//
matrix = {a:2*radius, b:0, c:0, d:0, e:2*radius, f:0, g:centerX, h:centerY, i:1};
beginGradientFill("radial", colors, alphas, ratios, matrix);
moveTo(centerX, centerY);
lineTo(centerX+radius*Math.cos(angle0), centerY+radius*Math.sin(angle0));
lineStyle(1.25, "0x000000", 50);
//
lineTo(centerX+radius*Math.cos(angle1), centerY+radius*Math.sin(angle1));
lineStyle(0, "0x000000", 0);
moveTo(centerX, centerY);
endFill();
}
}
};
//
FColorWheel.drawWheel(100, 200, 200, 1, 1);