Форум 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=80849)

Nata123 07.06.2006 14:12

Площадь по пикселям
 
скажите пожалуйста, есть ли такая функция, которая может вычислить количество точек одного цвета в мувике?

etc 07.06.2006 14:29

Пробегайся по всей картинки, смотри цвет пикселя. Если совпадает с заданным, то плюсуй счётчик.

Reijii 07.06.2006 14:29

я думаю что нужно воспользоватся встроенным классом BitMapData.
там есть такие вещи как getPixel(), getPixel32()

в help искать по пути:
Цитата:

ActionScript classes > BitmapData (flash.display.BitmapData) > getPixel32 (BitmapData.getPixel32 method)

Nata123 07.06.2006 14:46

что-то не получается
я рисую мувик , в нём красный прямоугольник и синий прямоугольник
мувик называю obj
пишу код
Код:

trace( obj.getPixel32(0, 10) );
возвращается undefined

Nata123 07.06.2006 14:51

как просмотреть цвет пикселя?

Reijii 07.06.2006 14:53

Цитата:

Сообщение от Nata123
как просмотреть цвет пикселя?

а посмотреть в help ? ;)

вот выдержка

Код:

import flash.display.BitmapData;

var myBitmapData:BitmapData = new BitmapData(100, 80, true, 0xFFAACCEE);

var mc:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth());
mc.attachBitmap(myBitmapData, this.getNextHighestDepth());

var alpha:String = (myBitmapData.getPixel32(0, 0) >> 24 & 0xFF).toString(16);
trace(">> alpha: " + alpha); // ff

var red:String = (myBitmapData.getPixel32(0, 0) >> 16 & 0xFF).toString(16);
trace(">> red: " + red); // aa

var green:String = (myBitmapData.getPixel32(0, 0) >> 8 & 0xFF).toString(16);
trace(">> green: " + green); // cc

var blue:String = (myBitmapData.getPixel32(0, 0) & 0xFF).toString(16);
trace(">> blue: " + blue); // ee

trace("0x" + alpha + red + green + blue); // 0xffaaccee


iNils 07.06.2006 14:55

mc это имя клипа
Код:

import flash.display.BitmapData;
bd = new BitmapData (mc._width, mc._height, false);
bd.draw (mc);
for (var i = 0; i < mc._width; i++) {
        for (var j = 0; j < mc._height; j++) {
                var clr = bd.getPixel (i, j);
                trace (clr);
        }
}

Вот только если у тебя клип не полностью прямоугольный будет забавно :)

Nata123 07.06.2006 14:59

Спасибо огромное!


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

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