Класс для плавного появления и затухания MovieClip-ов

Декабрь 4th, 2009 автор: Oleg Antipov

Очень часто при программировании игр хочется сделать для красоты плавное появление или затухание менюшек, кнопок и т.д. Каждый раз писать функционал для этого – очень геморно, поэтому я представляю вашему внимаю класс alphaFader, унаследовав который можно без проблем заставить MovieClip плавно появлятся или исчезать.

package anegLib
{ 
     import flash.display.MovieClip; 
 
     dynamic public class alphaFader extends MovieClip 
	 { 
	 	   import flash.utils.*;
		   import flash.events.*;
		   import flash.display.*;
		   import flash.text.*;
 
		   //Идёт затухание или появление (пременная для внутренних нужд)
		   var fadingout:Boolean=false;
 
		   //Скорость затухания
		   public var fadeSpeed:Number=0.1;
 
		   //Проявление до определённого порога (1.0 - полностью непрозрачный)
		   public var fadeMaxLimit:Number=1.0;
 
		   //Затухание до определённого порога (0.0 - полностью прозрачный)
		   public var fadeMinLimit:Number=0.0;
 
		   public function alphaFader() 
		   { 
			   fadingout=false;
			   addEventListener(Event.ENTER_FRAME, update); 
           } 
 
		   //Начать затухание
		   public function startFadeIn():void 
		   {
			   alpha=0;
			   visible=true;
			   fadingout=false;
 
           }
 
		   //Начать появление
		   public function startFadeOut():void 
		   {
			   alpha=1;
			   visible=true;
			   fadingout=true;
 
           } 
 
		   //Обновление параметров
		   public function update(e : Event):void 
		   { 
		   		if(visible)
		   		{
					if(fadingout)
					{
						if(alpha<=fadeMinLimit)
						{
							alpha=fadeMinLimit;
							visible=false;
							fadingout=false;
						}
						else
							alpha-=fadeSpeed;
					}
					else
						if(alpha>=fadeMaxLimit)
						{
							alpha=fadeMaxLimit;
						}
						else
							alpha+=fadeSpeed;
				}
           } 
     } 
}

Унаследовать класс можно или прописав его в Link Properties:
linkProp

Либо указав в самом коде:

package game
{
	public class gameMenu extends alphaFader 
	{
              //.........
        }
}

Использовать его весьма просто: вызываем startFadeIn() и мовиклип начинает появлятся, вызываем startFadeOut() и мовиклип плавно исчезает. Всё просто :)
Также можно установить скорость и порог затухания.

Пример использования порога затухания: Вам надо сделать чтобы при появлении менюшки игровое поле затемнялось на половину. Чтобы это сделать вам надо создать мовиклип на весь экран, содержащий чёрный прямоугольник. Потом унаследовать у него класс alphaFader. При вызове менюшки, надо будет вызывать у мовиклипа с чёрным прямоугольником startFadeIn() а также указать порог его появления fadeMaxLimit=0.5

Вот и всё. Надеюсь этот класс будет вам полезен :)

Класс можно скачать здесь: http://www.anegmetex.com/devblog/files/alphaFader.as

Категория: Полезные классы

4 Комментариев

  1. lol

    Use TweenLite, Luke!

  2. folex

    Тока начинаю программить на AS3 обязательно воспользуюсь наработкой. пасиб

  3. Max Firsoff

    не надо велосипеды изобретать!
    есть куча твинеров, они умееют не только фейдить через альфу, TweenLite, Caurina и т.д., пробей по гуглу =)

  4. Oleg Antipov

    Универсальность всегда идёт в ущерб как производительности так и удобству использования. Если бы мне требовалось бы сложная анимация движения\изменения параметров, то был бы резон воспользовался твиннером. Но для простого исчезновения объекта использовать твиннер всё равно что гвозди забивать микроскопом.

Оставить комментарий