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

2K WebStudio 26.05.2007 03:31

черно-белый
 
Написал как-то функцию, которая делает мувик черно-белым.

Код:

function setColorAdjust() {
        var a = arguments[0];
        var t = (a.adjust != undefined ? a.adjust : 1);
        var r = 0.212671;
        var g = 0.715160;
        var b = 0.072169;
        var filt = new ColorMatrixFilter([t*r+1-t, t*g, t*b, 0, 0, t*r, t*g+1-t, t*b, 0, 0, t*r, t*g, t*b+1-t, 0, 0, 0, 0, 0, 1, 0]);
        a.mc.adjust = t;
        a.mc.filters = new Array(filt);
}

Но вот проблема: не понимаю, почему, но функция то работает, то нет.. фигня какая-то...

пример вызова: setColorAdjust({mc:_root.mc, adjust:1});

screamge 26.05.2007 03:50

Код:

import flash.filters.ColorMatrixFilter;
import mx.events.EventDispatcher;
import mx.utils.Delegate;

class Screamge.effects.Tint {
        public var addEventListener:Function;
        private var dispatchEvent:Function;
        private var __mc:MovieClip;
        private var __des:Number = 0.01;
        private var __desaturation:Number = 0;
       
        public function Tint(mc:MovieClip) {
                EventDispatcher.initialize(this);
                __mc = mc;
                tinter ();
        }
       
        public function set des (num:Number):Void {
                __des = num;
        }
       
        public function Back ():Void {
                __mc.onEnterFrame = Delegate.create (this, this.BackTint)
        }       
       
        private function BackTint ():Void {
                __desaturation -= __des;
                __mc.filters = new Array(getDesaturationFilter(__desaturation));
                if (__desaturation <= 0){
                        delete __mc.onEnterFrame;
                                dispatchEvent ({type:'onFinish'})
                }
        }
       
        private function getDesaturationFilter(t) {
                t = t ? t : 1;
                var r:Number = 0.212671;
                var g:Number = 0.715160;
                var b:Number = 0.072169;
                return new ColorMatrixFilter([t*r+1-t, t*g, t*b, 0, 0, t*r, t*g+1-t, t*b, 0, 0, t*r, t*g, t*b+1-t, 0, 0, 0, 0, 0, 1, 0]);
        }
       
        private function tinter():Void {
                __mc.onEnterFrame = Delegate.create (this, this.onEnterHandle);
        }
       
        private function onEnterHandle ():Void {
                __desaturation += __des;
                __mc.filters = new Array(getDesaturationFilter(__desaturation));
                if (__desaturation >= 1){
                        delete __mc.onEnterFrame;
                        dispatchEvent ({type:'onFinish'});
                }
        }       
}

Взяв за основу код iNils -a написал класс, если он не против то пусть будет здесь. разбирайтесь.

Класс делает фотографию чёрно-белой, а также возвращает посредством вызова метода в обычное состояние.

Кстати вами написанная функция мало чем отличается от кода про который я говорил, вроде одно и тоже, разница есть маленькая - тот работает, а этот нет.

2K WebStudio 26.05.2007 09:32

Цитата:

Сообщение от screamge
Кстати вами написанная функция мало чем отличается от кода про который я говорил, вроде одно и тоже, разница есть маленькая - тот работает, а этот нет.

Черт.. Забыл написать это:
import flash.filters.ColorMatrixFilter;
import mx.events.EventDispatcher;
import mx.utils.Delegate;

сорри - уже поздно ночью было)

etc 26.05.2007 14:17

http://dev.etcs.ru/blog/as2/ru/etcs/...s/colorfilter/

iNils 26.05.2007 14:44

Цитата:

Сообщение от screamge
Взяв за основу код iNils -a написал класс...

Что то я не припомню, что бы писал подобное.

screamge 26.05.2007 14:58

Цитата:

Сообщение от iNils
Что то я не припомню, что бы писал подобное.

Насколько мне помнится ты выкладывал что-то аналогичное. Там не класс был а просто пара функций....я ошибаюсь?:)


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

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