Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   как получить цвет в указанной точке? (http://www.flasher.ru/forum/showthread.php?t=66696)

deepslam 13.07.2005 20:52

как получить цвет в указанной точке?
 
Доброго времени суток!
Собственно как программно получить цвет в 16 ричном формате (FFFFFF) в указанной точке MovieClip'а ?
Заранее спасибо =))))

Штрек 13.07.2005 21:04

хоть спасибо, хоть что -
никак........

silin 13.07.2005 21:05

вариант: заранее создать матрицу цветов, и брать из нее c[_x][_y]
Штрек, ты живой, ура..

Штрек 13.07.2005 21:07

Цитата:

Сообщение от silin
Штрек, ты живой, ура..

Более того -
я живее всех живых..... :p

DizMaster 13.07.2005 22:27

Flash - векторная, сложно определить точно координаты, поэтому и нет

Штрек 13.07.2005 22:51

Цитата:

Сообщение от DizMaster
Flash - векторная, сложно определить точно координаты, поэтому и нет

Предлагаю, задать цвет в точке {x:0,y:0}.... :p

KUZEN 14.07.2005 12:06

прикиньте нарисовать картинку хотябы 300х300 пикселей, програмно ... за...ся массив заполнять )))

DizMaster 14.07.2005 12:15

deepslam, а зачем это вообще тебе?

KUZEN 14.07.2005 12:23

наверное фотошоп во флеше делает, нада типа цвет с определённой области взять ... забыл как там этот инструмент называется )))

iNils 14.07.2005 12:41

ив выкладывал в конференции код, но там цвет можно брать только в определенной области, а не везде.

KUZEN 14.07.2005 12:43

Здесь без специального софта не обойтись ...

to INils >>
Слушай а ненапомнишь как там чего , а то перерывать архив замучаюсь ...

iNils 14.07.2005 13:08

Это ссылка на класс 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 ();


KUZEN 14.07.2005 13:43

спасиба .......


Часовой пояс GMT +4, время: 03:10.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.