Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Не работает фильтр (http://www.flasher.ru/forum/showthread.php?t=182257)

PainKiller 17.07.2012 18:17

Не работает фильтр
 
Вложений: 1
Возможно я опять туплю, но этот пример поставил меня в ступор, поэтому и пишу сюда. Я уже много раз пользовался фильтрами, но понять почему не работает этот код не могу. Задача - загрузить цветную картинку (грузится локально и флешка скомпилирована для локального доступа к файлам), применить к ней фильтр и сделать черно-белой фоновой картинкой. Вот код класса:
Код AS3:

package 
{
 
        import flash.display.*;
        import flash.events.*;
        import flash.net.URLRequest;
        import flash.geom.*;
        import flash.filters.ColorMatrixFilter;
        import fl.motion.AdjustColor;
 
 
        public class Main4 extends MovieClip
        {
                var _loader:Loader;
                var _path:String = "0101color.png";
                var loadedImage:DisplayObject;
                var fon:Bitmap;
                var item:Sprite;
                var ajustItemColor:AdjustColor;
                var _mask:Sprite;
 
 
 
                public function Main4()
                {
                        loadPic ();
 
                }
                public function loadPic ():void
                {
                        _loader = new Loader();
                        _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadPic);
                        //_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
                        _loader.load(new URLRequest(_path));
                }
                private function onLoadPic (e:Event):void
                {
                        loadedImage = _loader.content;
                        createFon ();
 
                }
                private function createFon ():void
                {
                        var bmpData:BitmapData = new BitmapData (loadedImage.width, loadedImage.height);
                        bmpData.draw (loadedImage);
                        var fon:Bitmap = new Bitmap (bmpData);
                        ajustItemColor = new AdjustColor ();
                        ajustItemColor.saturation = -100;
                        ajustItemColor.brightness = 0;
                        var colorMatrix:ColorMatrixFilter = new ColorMatrixFilter(ajustItemColor.CalculateFinalFlatArray());
                        var fonRect:Rectangle = new Rectangle (0, 0, loadedImage.width, loadedImage.height);
                        fon.bitmapData.applyFilter (fon.bitmapData, fonRect, new Point (), colorMatrix); // фильтр не работает
                        //addChild (fon);
                        var bg:Sprite = new Sprite ();
                        bg.filters = [colorMatrix]; //и  этот фильтр не работает
                        addChild (bg);
                        bg.addChild(fon);
 
 
                }
 
        }
 
}

Никаких ошибок не выкидывается, картинка просто появляется цветной. Исходник прилагаю.

Wolsh 17.07.2012 18:26

5 мегабайт? О__о
Каковы размеры картинки?

vizgl 17.07.2012 18:53

Используйте вот этот класс: http://gskinner.com/blog/archives/20...atrix_cla.html
вместо AdjustColor.

PainKiller 17.07.2012 19:11

Вложений: 1
Сорри, во fla-файл затесалась лишняя графика, убрал теперь размер один мегабайт. Класс скинера мне попадался, но с ним не работал, попробую

PainKiller 17.07.2012 19:24

Помогло, спасибо! Странно, что не так с AdjustColor? Я его уже использовал и все было нормально


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

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