Просмотр полной версии : черно-белый
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
Кстати вами написанная функция мало чем отличается от кода про который я говорил, вроде одно и тоже, разница есть маленькая - тот работает, а этот нет.
Черт.. Забыл написать это:
import flash.filters.ColorMatrixFilter;
import mx.events.EventDispatcher;
import mx.utils.Delegate;
сорри - уже поздно ночью было)
http://dev.etcs.ru/blog/as2/ru/etcs/filters/colorfilter/
Взяв за основу код iNils -a написал класс...Что то я не припомню, что бы писал подобное.
screamge
26.05.2007, 14:58
Что то я не припомню, что бы писал подобное.
Насколько мне помнится ты выкладывал что-то аналогичное. Там не класс был а просто пара функций....я ошибаюсь?:)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.