Ефект вітру з Flash CS3 Math.random ()
Тепер, коли у нас спалах падає сніжинкаR система частинок, давайте трохи змінити код ActionScript 3. Наш пластівчик просто падає прямо вниз. Але, якщо вітру абсолютно немає, більшість пластівців рухаються вниз на нахилі. Тож давайте скористаємося математикою, щоб змусити наш пластівчик трохи рухатися праворуч, коли він падає. Щоб додати більшої реалістичності, ми хочемо, щоб кількість горизонтального руху змінювалася, коли сніжинка робить її вниз по сцені.

Пам'ятайте, що в одному з наших попередніх навчальних посібників у цій серії ми розмістили пластівці в різних положеннях по горизонталі вздовж верху сцени. Ми зробили це, встановивши різні значення для позиції X для кожної пластівці. Тож у цьому підручнику ми можемо знову використовувати те саме властивість _Snowflake.x для управління горизонтальним рухом в анімації.

По-друге, коли ми створили свою луску, ми встановимо початкові X і Y позиції пластівця на випадкове число.

_Snowflake.x = Math.random () * 510;
_Snowflake.y = Math.random () * 40;

Ми можемо використовувати той же Math.random (), щоб контролювати кількість випадкових горизонтальних рухів. Ви здогадалися, що буде далі?

Ми знаємо, що на кожному кадрі нашого фільму Flash ми називаємо функцію снігопаду.

stage.addEventListener (Event.ENTER_FRAME, снігопад);

Ця функція збільшує властивість the_Snowflake.y на 10 для кожного кадру. Це те, що рухає пластівцем вниз по сцені.

_Snowflake.y + = 10;

Але це занадто швидко, щоб ми побачили тонкий горизонтальний рух, який ми додамо далі. Отже, давайте трохи сповільнимо його, змінивши 10 на 5.

_Snowflake.y + = 5;

Тепер ми можемо використовувати той же код для переміщення пластівця по горизонталі вправо. Все, що нам потрібно зробити, - це змінити the_Snowflake.y на_Snowflake.x.

_Snowflake.x + = 10;

Тепер сніжинка переміститься 10 пікселів праворуч і 5 пікселів вниз на кожному кадрі нашого флеш-фільму. Але було б більш реалістичним, якби горизонтальний рух сніжинки був більш випадковим, оскільки це робить шлях вниз по сцені. Це можна зробити, замінивши 10 на випадкове число між 0 і 9. Для цього будемо використовувати Math.random ().

_Snowflake.x + = Math.random () * 10;

Далі ми додаємо цей новий код до функції снігопаду і отримуємо цей.

якщо (_Snowflake.y> 370)
{stage.removeEventListener (Event.ENTER_FRAME, снігопад); }
ще
{_Snowflake.y + = 5;
_Snowflake.x + = Math.random () * 10;}

Але тепер, коли ми переміщуємо луска вправо, вона може врешті вийти за межі правої частини екрана. Пам'ятайте, що ми зупинили сніжинку, якщо вона впала нижче сцени.

якщо (_Snowflake.y> 370)

Ми також можемо зупинити це, якщо він вийде за межі правої частини сцени. Додамо це до нашого умовного твердження. Оскільки ми хочемо, щоб анімація припинилася, якщо або перший, або другий із цих умов є істинним, ми можемо використовувати || Оператор між двома умовами в операторі if.

якщо (_Snowflake.y> 370 || _Snowflake.x> 550)

Якщо будь-яке з цих умов є істинним, Flash видалить слухача подій ENTER_FRAME.

Ось наш новий код.
stage.addEventListener (Event.ENTER_FRAME, снігопад);

var _Snowflake: mcSnowflake;

_Snowflake = новий mcSnowflake ();
addChild (_Snowflake);
_Snowflake.x = Math.random () * 510;
_Snowflake.y = Math.random () * 40;

функція снігопад (подія: подія): недійсна
{
якщо (_Snowflake.y> 370 || _Snowflake.x> 550)
{stage.removeEventListener (Event.ENTER_FRAME, снігопад); }
ще
{_Snowflake.y + = 5; _Snowflake.x + = Math.random () * 10; }
}


Коли ви надсилаєте текст свого фільму, сніжинка тепер змінюватиме свій горизонтальний рух під час опускання на дно сцени. Збережіть свою сніжну сцену як SnowScene6.fla.

Авторські права 2018 Adobe Systems Incorporated. Всі права захищені. Знімки екрана продуктів Adobe передруковані з дозволу Adobe Systems Incorporated. Adobe, Photoshop, альбом Photoshop, Photoshop Elements, Illustrator, InDesign, GoLive, Acrobat, Cue, Premiere Pro, Premiere Elements, Bridge, After Effects, InCopy, Dreamweaver, Flash, ActionScript, Fireworks, Contribute, Captivate, Flash Catalyst та Flash Paper є або є [a] зареєстрованою торговою маркою (ими), або торговою маркою (іми) Adobe Systems Incorporated у США та / або інших країнах.