Это ссылка на класс AS2: http://www.dembicki.org/GradientAndSafePalette.as
А это из конфы для AS1 (возможно глюки)
Код:
this.setHSBPaletteClass = function () {
delete this.setHSBPaletteClass;
var RGB_COLORS = [0xFF0000, 0xFFFF00, 0x00FF00, 0x00FFFF, 0x0000FF, 0xFF00FF, 0xFF0000];
var RGB_ALPHAS = [100, 100, 100, 100, 100, 100, 100];
var RGB_RATIOS = [255 / 6 * 0, 255 / 6 * 1, 255 / 6 * 2, 255 / 6 * 3, 255 / 6 * 4, 255 / 6 * 5, 255 / 6 * 6];
var NO_ALPHAS_ARRAY = [100, 100];
var SHADOW_ALPHAS_ARRAY = [80, 80];
var WHITE_BLACK_ARRAY = [0xFFFFFF, 0];
var BLACK_WHITE_ARRAY = [0, 0xFFFFFF];
var WHITE_ARRAY = [0xFFFFFF, 0xFFFFFF];
var RATIOS_ARRAY = [0, 0xFF];
var ALPHAS_ARRAY = [0, 100];
// Hue - Saturation - Brightness (Оттенок - Насыщенность - Яркость)
var HSBPalette = function () {
this.init ();
};
// CREATE
HSBPalette.create = function (thisObject:MovieClip, name:String, depth:Number, initObject:Object) {
var mc = thisObject.createEmptyMovieClip (name, depth);
var t = HSBPalette;
mc.__proto__ = t.prototype;
for (var i in initObject) {
mc[i] = initObject[i];
}
t.call (mc);
return mc;
};
var tmp = HSBPalette.prototype = new MovieClip ();
//
tmp.onPress = function () {
this.hue_locked = this._xmouse < this._size;
_root.old_clr.setRGB (this.hex);
this.onMouseMove = function () {
if (!this.hitTest (_root._xmouse, _root._ymouse, true)) {
return;
}
var hsb_obj = this.getHSB ();
if (!this.hue_locked) {
if (this._xmouse < this._size) {
return;
}
var k = 360 / this._size;
hsb_obj.h = 360 - this._ymouse * k;
} else {
if (this._xmouse > this._size) {
return;
}
var k = 100 / this._size;
hsb_obj.s = this._xmouse * k;
hsb_obj.b = 100 - this._ymouse * k;
}
this.setHSB (hsb_obj);
this.setHUEmode (this._size);
_root.new_clr.setRGB (this.hex);
};
this.onMouseUp = function () {
delete this.onMouseMove;
delete this.onMouseUp;
};
this.onMouseMove ();
};
//
tmp.init = function () {
// this.hex = 0x0000FF;
this._mode = this._mode;
// this._safe = Boolean(this._safe);
};
tmp.addProperty ("_size", function () {
return this.size || 255;
}, function (val) {
this.size = val;
this["set" + this.mode.toUpperCase () + "mode"] (this._size);
});
tmp.addProperty ("_mode", function () {
return this.mode;
}, function (val) {
this.mode = val = (val == "saturation" ? "saturation" : val == "brightness" ? "brightness" : val == "red" ? "red" : val == "green" ? "green" : val == "blue" ? "blue" : "hue");
this["set" + val.toUpperCase () + "mode"] (this._size);
});
tmp.setHUEmode = function (size) {
var hsb_obj = this.getHSB ();
this.setHSB (hsb_obj);
var size = size || this.size || 255;
var size1 = size / Math.cos (Math.PI / 4);
var clr = this.getHueRGB ();
this.clear (), this.beginFill (clr);
this.lineTo (0, size), this.lineTo (size, size), this.lineTo (size, 0), this.lineTo (0, 0), this.endFill ();
this.beginGradientFill ("linear", WHITE_ARRAY, [100, 0], RATIOS_ARRAY, {matrixType:"box", x:0, y:0, w:size, h:size, r:0});
this.lineTo (0, size), this.lineTo (size, size), this.lineTo (size, 0), this.lineTo (0, 0), this.endFill ();
this.beginGradientFill ("linear", [0, 0], [0, 100], RATIOS_ARRAY, {matrixType:"box", x:0, y:0, w:size, h:size, r:Math.PI / 2});
this.lineTo (0, size), this.lineTo (size, size), this.lineTo (size, 0), this.lineTo (0, 0), this.endFill ();
//
var x = size + 10, w = 20;
this.beginGradientFill ("linear", RGB_COLORS, RGB_ALPHAS, RGB_RATIOS, {matrixType:"box", x:x, y:0, w:w, h:size, r:-Math.PI / 2});
this.moveTo (x, 0), this.lineTo (x + w, 0), this.lineTo (x + w, size), this.lineTo (x, size), this.lineTo (x, 0), this.endFill ();
//
var p_x = hsb_obj.s * size / 255;
var p_y = size - hsb_obj.b * size / 255;
this.lineStyle (10, 0, 100), this.moveTo (p_x, p_y), this.lineTo (p_x + .5, p_y);
this.lineStyle (8, 0xFFFFFF, 100), this.moveTo (p_x, p_y), this.lineTo (p_x + .5, p_y);
this.lineStyle (6, this.hex, 100), this.moveTo (p_x, p_y), this.lineTo (p_x + .5, p_y);
//
p_h = size - hsb_obj.h * size / 360;
this.lineStyle (0, 0, 100), this.moveTo (x, p_h - 5), this.lineTo (x + w, p_h - 5), this.lineTo (x + w, p_h + 5), this.lineTo (x, p_h + 5), this.lineTo (x, p_h - 5);
// this.lineStyle(8, 0xFFFFFF, 100), this.moveTo(x, y), this.lineTo(x+.5, y);
// this.lineStyle(6, this.hex, 100), this.moveTo(x, y), this.lineTo(x+.5, y);
};
// >>>>>>>>>>>>>>>>> CONVERSATIONS >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
tmp.parseString = function (val) {
return Number (val) || parseInt (val) || parseInt ("0x" + val.substr (val.lastIndexOf ("#") + 1)) || 0;
};
tmp.addProperty ("_red", function () {
return ((this.hex >> 16) % 0xFF + 0xFF) % 0xFF;
}, function (val) {
val = (val % 0xFF + 0xFF) % 0xFF;
var hex = this.hex, gb = this.hex ^ (this.hex >> 16 << 16), g = gb >> 8 << 8;
this.hex = (val << 16) | g | (gb ^ g);
});
tmp.addProperty ("_green", function () {
return (((this.hex ^ (this.hex >> 16 << 16)) >> 8) % 0xFF + 0xFF) % 0xFF;
}, function (val) {
val = (val % 0xFF + 0xFF) % 0xFF;
var hex = this.hex, r = hex >> 16 << 16, gb = hex ^ r;
this.hex = (r | (val << 8) | (gb ^ (gb >> 8 << 8)));
});
tmp.addProperty ("_blue", function () {
return ((this.hex << 24 >> 24) % 0xFF + 0xFF) % 0xFF;
}, function (val) {
val = (val % 0xFF + 0xFF) % 0xFF;
var hex = this.hex, r = hex >> 16 << 16;
this.hex = (r | (hex ^ r) >> 8 << 8 | val);
});
// ----------------------------------
tmp.getHex = function (r, g, b) {
return ((r << 16 | g << 8 | b) % 0xFFFFFF + 0xFFFFFF) % 0xFFFFFF;
};
tmp.getRGB = function (hex) {
var hex = this.hex, r = this.hex >> 16, gb = (hex ^ (r << 16)), g = gb >> 8;
return {red:r, green:g, blue:gb ^ (g << 8)};
};
tmp.addProperty ("_hue", function () {
return this.getHSB ().h;
}, function (val) {
val = (val % 360 + 360) % 360;
var hsb_obj = this.getHSB ();
hsb_obj.h = val;
this.setHSB (hsb_obj);
});
tmp.addProperty ("_saturation", function () {
return this.getHSB ().s;
}, function (val) {
val = (val % 100 + 100) % 100;
var hsb_obj = this.getHSB ();
hsb_obj.s = val;
this.setHSB (hsb_obj);
});
tmp.addProperty ("_brightness", function () {
return this.getHSB ().b;
}, function (val) {
val = (val % 100 + 100) % 100;
var hsb_obj = this.getHSB ();
hsb_obj.b = val;
this.setHSB (hsb_obj);
});
//
tmp.getHSB = function () {
var hex = this.hex || 0;
var r = hex >> 16, gb = (hex ^ (r << 16)), g = gb >> 8, b = gb ^ (g << 8);
var low = Math.min (r, Math.min (g, b));
var high = Math.max (r, Math.max (g, b));
var diff = high - low, hue = 0, saturation = 0, brightness = Math.round (high / 2.55) || 0;
if (diff) {
saturation = Math.round (100 * (diff / high)) || 0;
hue = ((r == high) ? ((g - b) / diff) : (g == high) ? 2 + (b - r) / diff : 4 + (r - g) / diff) * 60;
hue += (hue > 360 ? -360 : hue < 0 ? 360 : 0);
} else {
hue = this.last_hue;
}
return {h:hue, s:saturation, b:brightness};
};
tmp.setHSB = function (hsb_obj) {
var r, g, b;
hsb_obj.h = hsb_obj.h > 360 ? 0 : hsb_obj.h <= 0 ? 0 : hsb_obj.h;
hsb_obj.s *= 2.55;
hsb_obj.b *= 2.55;
this.last_hue = hsb_obj.h;
if (!hsb_obj.h && !hsb_obj.s) {
r = g = b = hsb_obj.b;
return this.hex = (r << 16 | g << 8 | b);
}
var diff = (hsb_obj.b * hsb_obj.s) / 255;
var low = hsb_obj.b - diff;
if (hsb_obj.h > 300 || hsb_obj.h <= 60) {
r = hsb_obj.b;
if (hsb_obj.h > 300) {
g = Math.round (low);
b = -Math.round ((hsb_obj.h - 360) / 60 * diff - low);
} else {
b = Math.round (low);
g = Math.round (hsb_obj.h / 60 * diff + low);
}
return this.hex = (r << 16 | g << 8 | b);
}
if (hsb_obj.h > 60 && hsb_obj.h < 180) {
g = hsb_obj.b;
if (hsb_obj.h < 120) {
b = Math.round (low);
r = Math.round (low - (hsb_obj.h / 60 - 2) * diff);
} else {
r = Math.round (low);
b = Math.round (low + (hsb_obj.h / 60 - 2) * diff);
}
return this.hex = (r << 16 | g << 8 | b);
}
b = hsb_obj.b;
if (hsb_obj.h < 240) {
r = Math.round (low);
g = Math.round (low - (hsb_obj.h / 60 - 4) * diff);
} else {
g = Math.round (low);
r = Math.round (low + (hsb_obj.h / 60 - 4) * diff);
}
return this.hex = (r << 16 | g << 8 | b);
};
tmp.getHueRGB = function () {
var r, g, b;
var angle = this.getHSB ().h;
var x = angle / 60;
x = x > 6 ? 6 : x < 0 ? 0 : x;
var x_up = x - Math.floor (x), x_down = 1 - x_up;
x < 1 ? (r = 255, g = 255 * x_up, b = 0) : x < 2 ? (r = 255 * x_down, g = 255, b = 0) : x < 3 ? (r = 0, g = 255, b = 255 * x_up) : x < 4 ? (r = 0, g = 255 * x_down, b = 255) : x < 5 ? (r = 255 * x_up, g = 0, b = 255) : x < 6 ? (r = 255, g = 0, b = 255 * x_down) : "";
return (r << 16 | g << 8 | b);
};
// */
_global.HSBPalette = HSBPalette;
ASSetPropFlags (_global, 'HSBPalette', 7, 1);
};
this.setHSBPaletteClass ();
///////////// ------------------------------------------------------
HSBPalette.create (this, "hsb_mc", 0, {_x:400, size:150});
this.createEmptyMovieClip ('new_mc', 1);
this.new_clr = new Color (this.new_mc);
this.new_mc.beginFill (0, 100);
this.new_mc.lineTo (200, 0);
this.new_mc.lineTo (200, 100);
this.new_mc.lineTo (0, 100);
this.new_mc.lineTo (0, 0);
this.new_mc.endFill ();
this.createEmptyMovieClip ('old_mc', 2);
this.old_clr = new Color (this.old_mc);
this.old_mc.beginFill (0, 100);
this.old_mc.moveTo (0, 100);
this.old_mc.lineTo (200, 100);
this.old_mc.lineTo (200, 200);
this.old_mc.lineTo (0, 200);
this.old_mc.lineTo (0, 100);
this.old_mc.endFill ();
|