Windeffect met Flash CS3 Math.random ()
Nu onze sneeuwvlok in onze flits valtR deeltjessysteem, laten we de ActionScript 3-code een beetje aanpassen. Onze vlok valt gewoon recht naar beneden. Maar tenzij er absoluut geen wind is, reizen de meeste vlokken schuin naar beneden. Laten we dus wat wiskunde gebruiken om onze vlok een beetje naar rechts te laten bewegen als deze valt. Om meer realisme toe te voegen, willen we dat de hoeveelheid horizontale beweging verandert naarmate de sneeuwvlok zijn weg naar beneden het podium bereikt.

Vergeet niet dat we in een van onze eerdere tutorials in deze serie vlokken op verschillende posities horizontaal langs de bovenkant van het podium hebben geplaatst. We deden dit door verschillende waarden in te stellen voor de X-positie voor elke vlok. Dus in deze zelfstudie kunnen we dezelfde eigenschap _Snowflake.x opnieuw gebruiken om de horizontale beweging in de animatie te regelen.

Ten tweede, toen we onze vlok creëerden, zetten we de initiële X- en Y-posities van de vlok op een willekeurig getal.

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

We kunnen dezelfde Math.random () gebruiken om de hoeveelheid willekeurige horizontale bewegingen te regelen. Heb je geraden wat er daarna komt?

We weten dat we op elk frame van onze Flash-film de sneeuwvalfunctie noemen.

stage.addEventListener (Event.ENTER_FRAME, sneeuwval);

Deze functie verhoogt de eigenschap_Snowflake.y met 10 voor elk frame. Dit is wat de vlok het podium naar beneden beweegt.

_Snowflake.y + = 10;

Maar dat is te snel voor ons om de subtiele horizontale beweging te zien die we hierna zullen toevoegen. Laten we het een beetje vertragen door de 10 in een 5 te veranderen.

_Snowflake.y + = 5;

Nu kunnen we dezelfde code gebruiken om de vlok horizontaal naar rechts te verplaatsen. Het enige dat we hoeven te doen is de_Snowflake.y te veranderen in_Snowflake.x.

_Snowflake.x + = 10;

Nu gaat de sneeuwvlok 10 pixels naar rechts en 5 pixels naar beneden bij elk frame in onze Flash-film. Maar het zou realistischer zijn als de horizontale beweging van de sneeuwvlok meer willekeurig zou zijn, omdat deze zich een weg omlaag het podium bevindt. We kunnen dit doen door de 10 te vervangen door een willekeurig getal tussen 0 en 9. We zullen hiervoor Math.random () gebruiken.

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

Vervolgens voegen we deze nieuwe code toe aan de sneeuwvalfunctie en krijgen we deze.

if (_Snowflake.y> 370)
{stage.removeEventListener (Event.ENTER_FRAME, sneeuwval); }
anders
{_Snowflake.y + = 5;
_Snowflake.x + = Math.random () * 10;}

Maar nu we de vlok naar rechts verplaatsen, kan het uiteindelijk verder gaan dan de rechterkant van het scherm. Vergeet niet dat we de sneeuwvlok hebben gestopt als deze onder het podium viel.

if (_Snowflake.y> 370)

We kunnen het ook stoppen als het verder gaat dan de rechterkant van het podium. Laten we dat toevoegen aan onze voorwaardelijke verklaring. Omdat we willen dat de animatie stopt als de eerste OF de tweede van deze voorwaarden waar is, kunnen we de || gebruiken operator tussen de twee voorwaarden in de if-instructie.

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

Als aan een van deze voorwaarden wordt voldaan, verwijdert Flash de gebeurtenislistener ENTER_FRAME.

Hier is onze nieuwe code.
stage.addEventListener (Event.ENTER_FRAME, sneeuwval);

var _Snowflake: mcSnowflake;

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

functie sneeuwval (evenement: evenement): ongeldig
{
if (_Snowflake.y> 370 || _Snowflake.x> 550)
{stage.removeEventListener (Event.ENTER_FRAME, sneeuwval); }
anders
{_Snowflake.y + = 5; _Snowflake.x + = Math.random () * 10; }
}


Wanneer je je film een ​​sms-bericht stuurt, verandert de sneeuwvlok nu zijn horizontale beweging wanneer deze naar de onderkant van het podium valt. Sla uw sneeuwscène op als SnowScene6.fla.

Copyright 2018 Adobe Systems Incorporated. Alle rechten voorbehouden. Schermafbeeldingen van Adobe-producten herdrukt met toestemming van Adobe Systems Incorporated. Adobe, Photoshop, Photoshop Album, Photoshop Elements, Illustrator, InDesign, GoLive, Acrobat, Cue, Premiere Pro, Premiere Elements, Bridge, After Effects, InCopy, Dreamweaver, Flash, ActionScript, Fireworks, Contribute, Captivate, Flash Catalyst en Flash Paper is / zijn ofwel [a] geregistreerde handelsmerken [s] of een handelsmerk [s] van Adobe Systems Incorporated in de Verenigde Staten en / of andere landen.