Efect de vânt cu Flash CS3 Math.random ()
Acum că avem fulgul de zăpadă care cade în blițR sistem de particule, haideți să modificăm puțin codul ActionScript 3. Fulgul nostru cade direct în jos. Dar, cu excepția cazului în care nu există absolut niciun vânt, majoritatea fulgilor călătoresc în pantă. Așa că haideți să folosim niște matematici pentru a face ca fulgul nostru să se deplaseze ușor spre dreapta pe măsură ce cade. Pentru a adăuga mai mult realism, dorim ca cantitatea de mișcare orizontală să se schimbe pe măsură ce fulgul de zăpadă face ca acesta să coboare.

Nu uitați, că într-unul dintre tutorialele noastre anterioare din această serie, am așezat fulgi în diferite poziții orizontal de-a lungul vârfului scenei. Am făcut acest lucru setând valori diferite pentru poziția X pentru fiecare fulg. Deci, în acest tutorial, putem folosi din nou aceeași proprietate _Snowflake.x pentru a controla mișcarea orizontală din animație.

În al doilea rând, când ne-am creat fulgii, am setat pozițiile X și Y inițiale ale fulgului la un număr aleatoriu.

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

Putem folosi aceeași Math.random () pentru a controla cantitatea de mișcare orizontală aleatorie. Ai ghicit ce urmează?

Știm că pe fiecare cadru al filmului nostru Flash, numim funcția de deszăpezire.

stage.addEventListener (Eveniment.ENTER_FRAME, ninsori);

Această funcție mărește proprietatea_Snowflake.y cu 10 pentru fiecare cadru. Aceasta este ceea ce mișcă fulgul pe scenă.

_Snowflake.y + = 10;

Dar asta este prea rapid pentru a vedea mișcarea orizontală subtilă pe care o vom adăuga în continuare. Așadar, haideți să încetinesc puțin schimbând 10 la 5.

_Snowflake.y + = 5;

Acum putem folosi același cod pentru a muta fulgul orizontal spre dreapta. Tot ce trebuie să facem este să schimbăm_Snowflake.y în_Snowflake.x.

_Snowflake.x + = 10;

Acum, fulgul de zăpadă va muta 10 pixeli spre dreapta și 5 pixeli în jos la fiecare cadru din filmul nostru Flash. Dar, ar fi mai realist dacă mișcarea orizontală a fulgului de zăpadă ar fi mai aleatorie, deoarece face ca acesta să coboare. Putem face acest lucru înlocuind 10 cu un număr aleator între 0 și 9. Vom folosi Math.random () pentru a face acest lucru.

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

În continuare, adăugăm acest nou cod funcției de zăpadă și obținem acest lucru.

if (_Snowflake.y> 370)
{stage.removeEventListener (Eveniment.ENTER_FRAME, ninsori); }
altfel
{_Snowflake.y + = 5;
_Snowflake.x + = Math.random () * 10;}

Dar acum când mutăm fulgii spre dreapta, s-ar putea să treacă dincolo de partea dreaptă a ecranului. Amintiți-vă că am oprit fulgul de zăpadă dacă a căzut sub scena.

if (_Snowflake.y> 370)

O putem opri și dacă trece dincolo de partea dreaptă a scenei. Să adăugăm asta la declarația noastră condițională. Deoarece dorim ca animația să se oprească dacă prima sau a doua dintre aceste condiții sunt adevărate, putem folosi || operator între cele două condiții din instrucțiunea if.

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

Dacă oricare dintre aceste condiții sunt adevărate, Flash va elimina ascultătorul de evenimente ENTER_FRAME.

Iată noul nostru cod.
stage.addEventListener (Eveniment.ENTER_FRAME, ninsori);

var _Snowflake: mcSnowflake;

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

funcționează căderea de zăpadă (eveniment: Eveniment): nul
{
if (_Snowflake.y> 370 || _Snowflake.x> 550)
{stage.removeEventListener (Eveniment.ENTER_FRAME, ninsori); }
altfel
{_Snowflake.y + = 5; _Snowflake.x + = Math.random () * 10; }
}


Când trimiteți un text la filmul dvs., fulgul de zăpadă va varia acum mișcarea sa orizontală, deoarece va cădea în partea de jos a scenei. Salvați-vă scena de zăpadă ca SnowScene6.fla.

Copyright 2018 Adobe Systems Incorporated. Toate drepturile rezervate. Captura (ecranele) de produs Adobe tipărite cu permisiunea Adobe Systems Incorporated. Adobe, Photoshop, Photoshop Album, Photoshop Elements, Illustrator, InDesign, GoLive, Acrobat, Cue, Premiere Pro, Elementele Premiere, Bridge, After Effects, InCopy, Dreamweaver, Flash, ActionScript, Fireworks, Contribute, Captivate, Flash Catalyst și Flash Paper este / sunt [o] marcă înregistrată [sau] sau o marcă comercială a Adobe Systems Incorporated în Statele Unite și / sau în alte țări.