Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 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

Создать новую тему   Часовой пояс GMT +4, время: 06:52.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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