• Авторизация


Пламя свечи на AS3 16-03-2017 18:10 к комментариям - к полной версии - понравилось!


Это вторая часть урока. Начало тут.

Создаём пламя в AS3 кодом, который любезно предоставил Монстер.
Проверил работоспособность в Adobe Flash CS6 и в Adobe Animate CC 2017. Нормально! Разве что добавить сглаженности пламени.

1. Создаём на рабочем столе папку проекта с именем, скажем, "Plamya_AS3"
2. Создаём документ Action Script 3.0, нажимаем комбинацию клавиш Ctrl+Shift+S (или: Файл>Сохранить как..), даём название "Plamya_AS3" и !сохраняем в папке проекта!
3. Создаём файл AS3:( Файл>Создать>Файл Action Script )

[показать]



и прописываем в него код:
 

CODE
package {
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;

/**
 * ...
 * @author MOHCTEP
 * @version:
 * @created: 14.03.2017 14:35
 * @description:
 * Flame - Класс пламени свечи
 */
public class Flame extends Sprite {
 /**
  * Конструктор класса. Дожидается добавления на сцену.
  */
 public function Flame() {
  stage ? init() : addEventListener(Event.ADDED_TO_STAGE, init);
 }
 
 /**** LISTENERS SECTION ****/
 
 /**
  * Сцена доступна - начинаем инсталляцию:
  * Подписываемся на событие перехода по кадрам - Event.ENTER_FRAME
  * и на событие завершения анимации будущих "частичек" пламени - Event.COMPLETE
  * @param e - Event.ADDED_TO_STAGE
  */
 private function init(e:Event = null):void {
  removeEventListener(Event.ADDED_TO_STAGE, init);
  addEventListener(Event.REMOVED_FROM_STAGE, destroyer);
  // entry point
  addEventListener(Event.ENTER_FRAME, flameBurn);
  addEventListener(Event.COMPLETE, removeBurn);
 }
 
 /**
  * "Ежекадровая" процедура.
  * "Добываем" из библиотеки 3 экземпляра "flame".
  * Ставим, масштабируем и поворачиваем их немножко рандомно.
  * И показываем, добавив в список отображения.
  * @param e - Event.ENTER_FRAME
  */
 private function flameBurn(e:Event):void {
  var new_flame:MovieClip;
  for (var i:int = 0; i < 3; i++) {
   new_flame = new flame();
   new_flame.x = Math.random()*2-1;
   new_flame.rotation = 1 + Math.random() * 3 - 3;
   new_flame.y = Math.random();
   new_flame.alpha = Math.random() * 0.5 + 0.5;
   new_flame.scaleX = .2 + Math.random() * .8;
   new_flame.scaleY = .5 + Math.random() * .7;
   addChild(new_flame);
  }
 }
 /**
  * Какой-то из ранее добавленных экземпляров пламени отчитался о завершении своей анимации.
  * Удалим его из списка отображения.
  * @param e - Event.COMPLETE
  */
 private function removeBurn(e:Event):void {
  removeChild(e.target as MovieClip);
 }
 /**
  * Нас удалили со сцены.
  * Отпишемся от всех, ранее назначенных, собвтий и почистим список отображения.
  * @param e - Event.REMOVED_FROM_STAGE
  */
 private function destroyer(e:Event):void {
  removeEventListener(Event.REMOVED_FROM_STAGE, destroyer);
  // remove all listeners, displayObjects, etc...
  removeEventListener(Event.ENTER_FRAME, flameBurn);
  removeEventListener(Event.COMPLETE, removeBurn);
  while (numChildren) removeChildAt(0);
 }
}

}



4. !Важно! Сохраняем Файл AS3 в папку проекта под именем Flame. Обязательно файл проекта Plamya_AS3.fla и файл Flame.as должны находится в одной папке!
5. Создаём в библиотеке мувик (Фрагмент ролика) flame ... повторяем все действия из поста №1 от пункта 1 до пункта 16 включительно, только код на 20-м кадре будет таким:
 

CODE
import flash.events.Event;

dispatchEvent(new Event(Event.COMPLETE,true));
stop();
//Остановим воспроизведение и рапортуем сцене о его завершении.



6. Вернёмся на монтажный кадр и в единственном кадре единственного слоя впишите код:
 

CODE
var fl:Flame = new Flame();
fl.x=274;
fl.y=216;
addChild(fl);



7. Нажмите Ctrl+Enter - должно проигрываться следующее:




В следующей части урока создадим подобие открытки




Вижу: интерес к теме по количеству скачиваний исходника и вложений есть.

Хотелось бы прочитать Ваши пожелания, замечания, дополнения в комментариях! Это же форум!

Исходник:  [показать]  Plamya_AS3.rar ( 5,94 KB ) Кол-во скачиваний: 1


[показать]  Безымянный_1.swf ( 1,96 KB ) Кол-во скачиваний: 32
[показать]  PlamyaAS3_AF_CS6.swf ( 67,64 KB ) Кол-во скачиваний: 29

 

 

вверх^ к полной версии понравилось! в evernote
Комментарии (23):
Георгий, а как добавить сглаживание пламени? Спасибо за урок!
Jorjorych 16-03-2017-18:27 удалить
Ответ на комментарий Татьяна_Волкова_Литвинова # Задай этот вопрос на Демиарте в теме. Автор кода Монстер, может он отредактирует, подскажет.
Ответ на комментарий Jorjorych # Хорошо!
ВАТ 16-03-2017-18:31 удалить
Георгий, очень естественное пламя! Здорово! Спасибо!
Jorjorych 16-03-2017-18:48 удалить
Ответ на комментарий ВАТ # Да, здорово! Только я делюсь не своими скриптами. Вера, заходи на Деми, там Таня В_Л, хочется оживить флеш-ветку форума. Ты же там прописана.
LiSu 16-03-2017-18:54 удалить
Результат радует!
ВАТ 16-03-2017-18:57 удалить
Ответ на комментарий Jorjorych # Спасибо за приглашение и за урок! Какая разница чьи скрипты, главное что делишься. Я раньше частенько заходила, а сейчас всё некогда. Кстати о скриптах... Георгий, у меня есть очень много скриптов, я их скачала откуда то очень давно, даже когда ещё не знала флеш (зачем скачала и сохранила - не знаю, сейчас уже так не делаю), если хочешь я тебе их пришлю, может быть ты разберёшься что там такое. И муви клипы есть, может быть они с ними были, не помню сейчас.
Jorjorych 16-03-2017-18:57 удалить
Ответ на комментарий LiSu # Продолжение следует!
Jorjorych 16-03-2017-18:59 удалить
Ответ на комментарий ВАТ # Да, с благодарностью приму!
Irina-snez 16-03-2017-20:13 удалить
[показать] Спасибо, Георгий, за замечательный урок!
Jorjorych 16-03-2017-20:27 удалить
Ответ на комментарий Irina-snez # Ирина - мастер фракталов, это не урок, а только начальная его часть! Фракталы могут быть использованы тут!
Jorjorych 16-03-2017-20:29 удалить
Ответ на комментарий S_V_N # Спасибо, Света! Играю с огнём! Но я аккуратно!
ВАТ 16-03-2017-20:48 удалить
Ответ на комментарий Jorjorych # Отправляю.
koreckolga 17-03-2017-23:01 удалить
Спасибо большое, Георгий! Уже первый урок попробовала, но пока результата никакого, ничего не получается...)) На градиенте остановилась...))
Jorjorych 18-03-2017-12:12 удалить
Ответ на комментарий koreckolga # Оля, а на Демиарте можешь ставить вопрос? Я буду там продолжать тему, заодно отвечу.
koreckolga 18-03-2017-13:13 удалить
Ответ на комментарий Jorjorych # Я давненько была там, но зарегистрирована. Спасибо, Георгий!
Jorjorych 18-03-2017-18:17 удалить
Ответ на комментарий koreckolga # Тогда Добро пожаловать! http://demiart.ru/forum/index.php?showtopic=260127
koreckolga 20-03-2017-08:28 удалить
Ответ на комментарий Jorjorych # Добренько!
Jorjorych 20-03-2017-11:38 удалить
Ответ на комментарий koreckolga # В ожидании!
koreckolga 20-03-2017-14:20 удалить
Ответ на комментарий Jorjorych # бегу, пока обед...)))


Комментарии (23): вверх^

Вы сейчас не можете прокомментировать это сообщение.

Дневник Пламя свечи на AS3 | Jorjorych - Дневник Jorjorych | Лента друзей Jorjorych / Полная версия Добавить в друзья Страницы: раньше»