Класс Flamer - это класс на языке ActionScript 3.0, написанный Jon-ом Howard-ом для реализации эффекта огня (эффекта горения). Данная реализация эффекта привлекает своей простотой и удобством. А сам эффект получается достаточно реалистичным и не слишком ресурсоёмким.
Итак, рассмотрим пример использования класса Flamer (сам класс можно найти по ссылке в самом начале поста или взять из исходников к уроку, ссылка на которые находится в конце этого поста).
Сперва нарисуем объект, к которому хотим применить эффект. Пусть это будет Sprite с рисунком окружности...
Код ActionScript 3.0:
var sprite:Sprite = new Sprite();
sprite.graphics.beginFill(0xffffff,1);
sprite.graphics.drawCircle(0,0,50);
sprite.graphics.endFill();
addChild(sprite);
sprite.x = 275;
sprite.y = 200;
Результат:
Заготовка у нас есть. Переходим к основной части...
Код ActionScript 3.0:
/*
импорт классов
*/
import flash.display.Sprite;
import swingpants.effect.Flamer;
/*
объект, к которому будем применять эффект
*/
var sprite:Sprite = new Sprite();
sprite.graphics.beginFill(0xffffff,1);
sprite.graphics.drawCircle(0,0,50);
sprite.graphics.endFill();
addChild(sprite);
sprite.x = 275;
sprite.y = 200;
/*
Создаём экземпляр класса Flamer
Параметры:
1-й - объект, к которому будет применён эффект;
2-й и 3-й - ширина и высота области, в которой будет отображаться эффект
*/
var flamer:Flamer = new Flamer(sprite,550,400);
addChild(flamer);
/*
обновляем эффект в каждом кадре
*/
addEventListener(Event.ENTER_FRAME, onEnterFrames)
function onEnterFrames(event:Event):void
{
flamer.update();
}
Результат:
Согласитесь, эффект получился довольно симпатичным.
Кстати, эффект имеет несколько полезных настроек. Так, например, с помощью метода setFlameDirection() можно изменить направление языков пламени. Давайте направим язык пламени в сторону верхнего правого угла флеш-ролика.
Код ActionScript 3.0:
/*
импорт классов
*/
import flash.display.Sprite;
import swingpants.effect.Flamer;
import flash.geom.Point;
/*
объект, к которому будем применять эффект
*/
var sprite:Sprite = new Sprite();
sprite.graphics.beginFill(0xffffff,1);
sprite.graphics.drawCircle(0,0,50);
sprite.graphics.endFill();
addChild(sprite);
sprite.x = 275;
sprite.y = 200;
/*
Создаём экземпляр класса Flamer
Параметры:
1-й - объект, к которому будет применён эффект;
2-й и 3-й - ширина и высота области, в которой будет отображаться эффект
*/
var flamer:Flamer = new Flamer(sprite,550,400);
addChild(flamer);
/*
направление языков пламени
*/
flamer.setFlameDirection(new Point(1,-1));
/*
обновляем эффект в каждом кадре
*/
addEventListener(Event.ENTER_FRAME, onEnterFrames)
function onEnterFrames(event:Event):void
{
flamer.update();
}
Результат:
С помощью всё того же метода setFlameDirection() мы можем сделать языки пламени более мощными...
Код ActionScript 3.0:
/*
импорт классов
*/
import flash.display.Sprite;
import swingpants.effect.Flamer;
import flash.geom.Point;
/*
объект, к которому будем применять эффект
*/
var sprite:Sprite = new Sprite();
sprite.graphics.beginFill(0xffffff,1);
sprite.graphics.drawCircle(0,0,50);
sprite.graphics.endFill();
addChild(sprite);
sprite.x = 275;
sprite.y = 200;
/*
Создаём экземпляр класса Flamer
Параметры:
1-й - объект, к которому будет применён эффект;
2-й и 3-й - ширина и высота области, в которой будет отображаться эффект
*/
var flamer:Flamer = new Flamer(sprite,550,400);
addChild(flamer);
/*
направление языков пламени
*/
flamer.setFlameDirection(new Point(3,-3));
/*
обновляем эффект в каждом кадре
*/
addEventListener(Event.ENTER_FRAME, onEnterFrames)
function onEnterFrames(event:Event):void
{
flamer.update();
}
Результат:
А метод setFlameColour() позволяет настроить цвет пламени. Для этого в качестве единственного параметра методу setFlameColour надо указать одно из следующих значений:
0 - красно-оранжевое пламя (как в ранее приведённых примерах);
1 - синеватое пламя (напоминает горение бытового газа);
2 - жёлто-зелёное пламя;
3 - ядовито-зелёное пламя;
4 - пурпурное пламя.
Код ActionScript 3.0:
/*
импорт классов
*/
import flash.display.Sprite;
import swingpants.effect.Flamer;
import flash.geom.Point;
/*
объект, к которому будем применять эффект
*/
var sprite:Sprite = new Sprite();
sprite.graphics.beginFill(0xffffff,1);
sprite.graphics.drawCircle(0,0,50);
sprite.graphics.endFill();
addChild(sprite);
sprite.x = 275;
sprite.y = 200;
/*
Создаём экземпляр класса Flamer
Параметры:
1-й - объект, к которому будет применён эффект;
2-й и 3-й - ширина и высота области, в которой будет отображаться эффект
*/
var flamer:Flamer = new Flamer(sprite,550,400);
addChild(flamer);
/*
цвет пламени
*/
flamer.setFlameColour(1);
/*
направление языков пламени
*/
flamer.setFlameDirection(new Point(2,-2));
/*
обновляем эффект в каждом кадре
*/
addEventListener(Event.ENTER_FRAME, onEnterFrames)
function onEnterFrames(event:Event):void
{
flamer.update();
}
Результат:
Эффект огня хорошо смотрится не только на статичных спрайтах, но и на анимированных MovieClip-ах...
Код ActionScript 3.0:
/*
импорт классов
*/
import flash.display.Sprite;
import swingpants.effect.Flamer;
import flash.geom.Point;
/*
объект, к которому будем применять эффект
*/
var animMc:AnimMc = new AnimMc();
addChild(animMc);
animMc.x = 275;
animMc.y = 200;
/*
Создаём экземпляр класса Flamer
Параметры:
1-й - объект, к которому будет применён эффект;
2-й и 3-й - ширина и высота области, в которой будет отображаться эффект
*/
var flamer:Flamer = new Flamer(animMc,550,400);
addChild(flamer);
/*
цвет пламени
*/
flamer.setFlameColour(3);
/*
направление языков пламени
*/
flamer.setFlameDirection(new Point(2,-2));
/*
обновляем эффект в каждом кадре
*/
addEventListener(Event.ENTER_FRAME, onEnterFrames)
function onEnterFrames(event:Event):void
{
flamer.update();
}
Результат:
Вот, пожалуй, и всё, что я хотел рассказать о классе Flamer. Скачать исходники к данному уроку и сам класс Flamer можно по следующей ссылке - скачать исходники (под Adobe Flash CS5).
Спасибо за внимание :-)