Молния на actionscript 3.0

Content on this page requires a newer version of Adobe Flash Player.

Описание: 

Добрый день!!! Это снова Aloran)))

Сегодня мы будем учиться делать молнии в АС3. Урок этот полностью мой, т.е. с первой по последнюю строчку были взяты из моей головы.

На этот раз нам на этот раз ничего не придется рисовать, все будет работать с помощью скрипта. Ну почти все))).

Создайте навый документ АС3.

Рисуем прямоугольник темно фиолетового цвета. Это наш фон (небо когда нет молний).

Делаем новый слой.

Следующим шагом сделаем прямоугольник (небо когда сверкает молния), у меня он фиолетового цвета (чуть светлее предыдущего прямоугольника). И превратим его в мувиклип с именем Nebo_mc. Не забутьте записать это имя в инстанс нейм.

Затем на новом слое нарисуйте прямоугольник (зона в которой будут появляться молнии), сделайте его прозрачьным, и сделайте его мувиклипом (Ф8). Входим в этот мувиклип (я его назвал Molnia_mc).

И в новом слое начинаем писать наш скрипт:

1) Для начала создадим коробочку для нашей молнии и создадим таймер по которомучерез определенное (рандомное) время у нас появиться молния. Ну и естественно запустим таймер.

var Molnia:MovieClip = new MovieClip;
var timer1:Timer = new Timer(Math.random()*3000 + 2000, 1);
timer1.addEventListener("timer", onTimer1);
timer1.start();

2) Далее описываем функцию срабатывания молнии onTimer1 (надо бы по информотивнее в будующем функции обзывать)))

function onTimer1(event:TimerEvent):void {
molnia();
var timer2:Timer = new Timer(500, 1);
timer2.addEventListener("timer", onTimer2);
timer2.start();
var timer1:Timer = new Timer(Math.random()*6000 + 2000, 1);
timer1.addEventListener("timer", onTimer1);
timer1.start();
}

где, 1-я строчка это вызов функции рисующей молнию.

Блок таймера Timer2 отвечает за вызов функции стирания старой молнии

Блок таймера Timer1 отвечает за вызов через некоторое время функции onTimer1. Т.е. у нас полуцается что функция onTimer1вызывает себя через определенное время. Тем самым молнии у нас будут бесконечны.

3) Переходим к функции рисования (все пояснения по ее работе внутри кода):

function molnia():void {
var startX:Array = new Array; //координаты старта
var startY:Array = new Array; //
var conX:Array = new Array; //координаты финиша
var conY:Array = new Array; //
var col:Number = 10; //кол-во возможных ветвей молнии
var pix:Number = 1; //ширина пера
var width_:Number = 10; //длина единичного отрезка
var curveQuant:Number = 20; //количество изгибов
var dlt:Number = 15; //максимальное отклонение при изгибе
var remX:Array = new Array;; //промежуточные начальные значения участка ломаной
var remY:Array = new Array;; //
var remX0:Number;
var i:int; //счетчики
var j:int;
/////////// начальные значения для переменных ////////////
//задаем х из которого будет расти молния
startX[0] = Math.random()*800; //800 - это ширина мувиклипа Molnia_mc
startY[0] = 0;
for (j = 1; j

Думаю надо дополнительно описать по какому принципу создается сама молния. Молния это превернутое дерево. Грубо говоря растет палка определенной длины. у палочки этой есть небольшая вероятность разветвиться на 2 палочки. Если это происходит то растет уже 2 палочки, у них тоже есть возможность разветвиться.... и так до определенногоуровня.

4) Теперь опишем функцию стирания молнии. Там все го 2 строчки: в первой стираем молнию, а во второй убираем небо.

function onTimer2(event:TimerEvent):void {
Molnia.graphics.clear();
Nebo_mc.alpha = 0
}

Вот и все готово.

Думаю вам должно понравиться. Этот эффект можно при некоторой переделке использовать в играх, например метать молнию из рук чародея в его врагов))

Спасибо за внимание с вами был Aloran, специально для EasyFlash.ru

Комментарии

Аватар пользователя Aloran

Если вам не понятны какие либо функции, то ищите их в справочнике https://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/ или спрашивайте тут. Но лучше все таки сами попробуйте найти ответ.

Аватар пользователя vitassok

Спкасибо за урок. Отличный помог с кое чем разобраться. А вот етот справочник на который ты дал ссылку скачать нельзя. Именно этот вещь ОФИГЕННАЯ.))
дай ссылку если у тебя есть. ЗАРАНЕЕ благодарен

Аватар пользователя Aloran

vitassok,

Это официальный справочник Адобе по АС3. Я лично не встречал его отдельно от сайта.

Рад, что смог помочь. Пишите какого рода уроки еще хотите увидеть и я учту ваши пожелания по возможности.

Аватар пользователя vitkuz

Спасибо Aloran за чудесный урок, всегда хотел сделать генератор деревьев ))) Теперь заню как!

yes-yes

Аватар пользователя Aloran

vitkuz,

Вообще то тут про молнии))) Всетаки деревья чуть по иному надо делать)))

П.С.: И замени код буквенный на числовой плиз!!!!!

Аватар пользователя dr.S

vitassok, Aloran, есть этот справочник в форме отдельной от сайта ;-)
раз уж такая пьянка пошла - хотела ее в виде новости тут запостить, но

Администратором сайта был установлен лимит на максимальное количество новостей, допустимых к ожиданию на модерацию. На данный момент на сайт добавлено максимальное количество новостей, которые ожидают проверки администратором. Попробуйте добавить вашу новость немного позднее.

так что попослее, если такая необходимость сохранится - появится в разделе "книги"

Аватар пользователя rb

классно ,но мне до такого ой как далеко

Аватар пользователя gral

почему у меня выдаёт такую ошибку:
1071: Синтаксическая ошибка: ожидалось ключевое слово определения (как функция) после атрибута Function, а не ontimer1.
в этой строке:
Function ontimer1(event:TimerEvent):void {

Аватар пользователя Aloran

Function с маленькой буквы

Аватар пользователя gral

а ща такую:
1050: Нельзя выполнить присваивание неизвестной переменной.

<p> //задаем х из которого будет расти молния</p>

Аватар пользователя Intrasens

альфа = 100 ?

scratch

для таймера наверно еще лучше стоп добавлять, хотя...

Аватар пользователя Aloran

Лучше конечно юзать visible, но можно и так)

Аватар пользователя 94pavel94

Thank you!!=))