Эффект огня на ActionScript 3.0

Класс 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).

Спасибо за внимание :-)

Автор: admin

Дата добавления: 2013-03-09

Просмотров: 7100

Рейтинг поста: +25-

Правила перепечатки

Социальные закладки:
Комментарии:
Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2013-09-08
Рад был помочь.
Комментатор
Комментарий добавил(а): Владимир
Дата добавления: 2013-09-08
Спасибо огромное за помощь в освоении сильного и могучего языка программирования ActionScript 3.0
Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2013-09-06
Так уж реализован эффект. Если это баннер, то можно так:


import flash.display.Sprite;
import swingpants.effect.Flamer;
import flash.geom.Point;
import flash.text.TextField;
import flash.text.TextFormat;

var container:Sprite = new Sprite();
addChild(container);
container.x = 100;
container.y = 100;

var txtFormat:TextFormat = new TextFormat("Verdana",64,0xffffff,true);

var txtField:TextField = new TextField();
txtField.width = 300;
txtField.height = 100;
txtField.text = "hello";
txtField.setTextFormat(txtFormat);
container.addChild(txtField);

var flamer:Flamer = new Flamer(container,550,400);
addChild(flamer);
flamer.setFlameColour(0);
flamer.setFlameDirection(new Point(2,-2));

flamer.buttonMode = true;

addEventListener(Event.ENTER_FRAME, onEnterFrames);
function onEnterFrames(event:Event):void
{
flamer.update();
}

flamer.addEventListener(MouseEvent.MOUSE_DOWN, gotourl);

function gotourl(Event:MouseEvent):void
{
var url:URLRequest = new URLRequest("http://www.edapskov.ru");
navigateToURL(url, "_blank");
}
Комментатор
Комментарий добавил(а): Владимир
Дата добавления: 2013-09-06
Доброй ночи! Сделал текст как в уроке, но не получается сделать этот эффект кликабельным. Тоесть кликнул на эффект, перешел по ссылке. Стандартным методом не выходит. Делаю поверх текста прозрачную кнопку, называю ее link и прописываю код:
link.addEventListener(MouseEvent.MOUSE_DOWN, gotourl);

function gotourl(Event:MouseEvent):void {
var url:URLRequest = new URLRequest("http://www.edapskov.ru");
navigateToURL(url, "_blank");
}

Эффект работает, но по ссылке не переходит. Направьте, где не так написал.
Комментатор
Комментарий добавил(а): Владимир
Дата добавления: 2013-09-01
Круто! Спасибо буду разбирать, что и куда.
Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2013-09-01
Спасибо, но это не мой эффект (ссылка на источник в самом начале поста).

Что до текста, то тут всё просто: кладём текст в контейнер, а затем к контейнеру применяем эффект. Примерно так:


import flash.display.Sprite;
import swingpants.effect.Flamer;
import flash.geom.Point;
import flash.text.TextField;
import flash.text.TextFormat;

var container:Sprite = new Sprite();
addChild(container);
container.x = 100;
container.y = 100;

var txtFormat:TextFormat = new TextFormat("Verdana",64,0xffffff,true);

var txtField:TextField = new TextField();
txtField.width = 300;
txtField.height = 100;
txtField.text = "hello";
txtField.setTextFormat(txtFormat);
container.addChild(txtField);

var flamer:Flamer = new Flamer(container,550,400);
addChild(flamer);
flamer.setFlameColour(0);
flamer.setFlameDirection(new Point(2,-2));

addEventListener(Event.ENTER_FRAME, onEnterFrames)
function onEnterFrames(event:Event):void
{
flamer.update();
}


Код проверен на работоспособность.
Комментатор
Комментарий добавил(а): Flash
Дата добавления: 2013-09-01
Здравствуйте! Посмотрел Ваш эффект с огнем, очень впечатлило. Изучаю ActionScript 3.0 с большим интересом. Подскажите, если применить этот эффект к тексту, какой класс вызывать необходимо?
Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2013-06-24
> Класс, спасибо скачал

Самому нравится :-)
Комментатор
Комментарий добавил(а): Александр
Дата добавления: 2013-06-23
Класс, спасибо скачал,
Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2013-03-10
Вот-вот, пора и тебе, лапуль, переходить на AS 3.0 :-)
Добавить комментарий:







[ + ] помощь по форматирование текста

Идиот-тест

Если все обязательные поля (отмечены * ) заполнены необходимой информацией, то нажимаем кнопку Добавить комментарий.

Страница 1 из 2: 12
Меню
Подписка
Рубрики
Метки
Последние комментарии
Рейтинг постов
Реклама
Друзья
География гостей
Статистика
Яндекс.Метрика