Эффект ветра с Flash CS3 Math.random ()
Теперь, когда наша снежинка падает в нашу Флэшр система частиц, давайте немного изменим код ActionScript 3. Наша чешуйка просто падает прямо вниз. Но, если нет абсолютно никакого ветра, большинство хлопьев движется вниз с уклоном. Итак, давайте немного математики, чтобы заставить нашу чешуйку слегка сместиться вправо, когда она падает. Чтобы добавить больше реализма, мы хотим, чтобы величина горизонтального движения менялась по мере того, как снежинка продвигается вниз по сцене.

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

Во-вторых, когда мы создали нашу чешуйку, мы устанавливаем начальные позиции Х и Х чешуйки на случайное число.

_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 пикселей вниз в каждом кадре в нашем Flash-фильме. Но было бы более реалистичным, если бы горизонтальное движение снежинки было более случайным, так как оно движется вниз по сцене. Мы можем сделать это, заменив 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.

if (_Snowflake.y> 370 || _Snowflake.x> 550)

Если какое-либо из этих условий выполняется, Flash удалит прослушиватель события ENTER_FRAME.

Вот наш новый код.
stage.addEventListener (Event.ENTER_FRAME, снегопад);

var _Snowflake: mcSnowflake;

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

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


Когда вы пишете текст фильма, снежинка теперь меняет свое горизонтальное движение по мере того, как она падает на дно сцены. Сохраните свою снежную сцену как SnowScene6.fla.

Copyright 2018 Adobe Systems Incorporated. Все права защищены. Снимки экрана продукта Adobe перепечатаны с разрешения Adobe Systems Incorporated. Adobe, Photoshop, альбом Photoshop, элементы Photoshop, Illustrator, InDesign, GoLive, Acrobat, Cue, Premiere Pro, Premiere Elements, Bridge, After Effects, InCopy, Dreamweaver, Flash, ActionScript, фейерверки, содействие, увлечение, Flash Catalyst и Flash Paper является или является [a] зарегистрированным товарным знаком (-ами) или товарным знаком (-ами) Adobe Systems Incorporated в США и / или других странах.