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

Очень часто при программировании игр хочется сделать для красоты плавное появление или затухание менюшек, кнопок и т.д. Каждый раз писать функционал для этого – очень геморно, поэтому я представляю вашему внимаю класс 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 комментария к “Класс для плавного появления и затухания MovieClip-ов

  1. folex

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

  2. Max Firsoff

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

  3. Oleg Antipov Автор публикации

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

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

Ваш email не будет опубликован. Обязательные поля отмечены *

55 − = 52

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>