Показать сообщение отдельно
Старый 12.10.2007, 15:20
screamge вне форума Посмотреть профиль Отправить личное сообщение для screamge Посетить домашнюю страницу screamge Найти все сообщения от screamge
  № 4  
Ответить с цитированием
screamge
Ветеран форума
 
Аватар для screamge

Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
Код:
import flash.filters.ColorMatrixFilter;
import mx.events.EventDispatcher;
import mx.utils.Delegate;

class com.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:Number):ColorMatrixFilter {
		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'});
		}
	}	
}
Надеюсь разберёшьсь
__________________
Free-lance | Twitter | Me