Efekt wiatru z Flash CS3 Math.random ()
Teraz, gdy nasz płatek śniegu spada we FlashuR system cząstek, zmodyfikujmy nieco kod ActionScript 3. Nasz płatek po prostu spada. Ale jeśli nie będzie absolutnie wiatru, większość płatków będzie opadać ukośnie. Użyjmy więc matematyki, aby nasz płatek przesunął się lekko w prawo, gdy spadnie. Aby dodać więcej realizmu, chcemy, aby ilość ruchu poziomego zmieniała się, gdy płatek śniegu przesuwa się w dół sceny.

Pamiętaj, że w jednym z naszych wcześniejszych samouczków z tej serii umieściliśmy płatki w różnych pozycjach poziomo wzdłuż szczytu sceny. Zrobiliśmy to, ustawiając różne wartości pozycji X dla każdego płatka. W tym samouczku możemy ponownie użyć tej samej właściwości _Snowflake.x do sterowania ruchem poziomym w animacji.

Po drugie, kiedy stworzyliśmy nasz płatek, ustawiamy początkowe pozycje X i Y płatka na losową liczbę.

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

Możemy użyć tej samej Math.random () do kontrolowania ilości losowych ruchów poziomych. Zgadłeś, co będzie dalej?

Wiemy, że w każdej klatce filmu Flash nazywamy funkcję opadów śniegu.

stage.addEventListener (Event.ENTER_FRAME, opady śniegu);

Ta funkcja zwiększa właściwość_Snowflake.y o 10 dla każdej ramki. To właśnie przesuwa płatek w dół sceny.

_Snowflake.y + = 10;

Jest to jednak zbyt szybkie, abyśmy mogli zobaczyć subtelny ruch poziomy, który dodamy w następnej kolejności. Spowolnijmy więc nieco, zmieniając 10 na 5.

_Snowflake.y + = 5;

Teraz możemy użyć tego samego kodu, aby przesunąć płatek poziomo w prawo. Wszystko, co musimy zrobić, to zmienić plik_Snowflake.y na_Snowflake.x.

_Snowflake.x + = 10;

Teraz płatek śniegu przesunie się o 10 pikseli w prawo i 5 pikseli w dół na każdej klatce w naszym filmie Flash. Byłoby jednak bardziej realistyczne, gdyby ruch poziomy płatka śniegu był bardziej losowy, ponieważ przesuwa się on w dół sceny. Możemy to zrobić, zastępując 10 losową liczbą od 0 do 9. W tym celu użyjemy Math.random ().

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

Następnie dodajemy ten nowy kod do funkcji śniegu i otrzymujemy to.

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

Ale teraz, gdy przesuwamy płatek w prawo, może on ostatecznie wykraczać poza prawą stronę ekranu. Pamiętaj, że zatrzymaliśmy płatek śniegu, jeśli spadł poniżej sceny.

if (_Snowflake.y> 370)

Możemy to również zatrzymać, jeśli wykracza poza prawą stronę sceny. Dodajmy to do naszej instrukcji warunkowej. Ponieważ chcemy, aby animacja się zatrzymała, jeśli pierwszy LUB drugi z tych warunków jest spełniony, możemy użyć || operator między dwoma warunkami w instrukcji if.

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

Jeśli jeden z tych warunków jest spełniony, Flash usunie detektor zdarzeń ENTER_FRAME.

Oto nasz nowy kod.
stage.addEventListener (Event.ENTER_FRAME, opady śniegu);

var _Snowflake: mcSnowflake;

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

funkcja snowfall (event: Event): void
{
if (_Snowflake.y> 370 || _Snowflake.x> 550)
{stage.removeEventListener (Event.ENTER_FRAME, opady śniegu); }
jeszcze
{_Snowflake.y + = 5; _Snowflake.x + = Math.random () * 10; }
}


Kiedy piszesz film, płatek śniegu zmienia teraz ruch poziomy, gdy spada na dół sceny. Zapisz scenę śnieżną jako SnowScene6.fla.

Prawa autorskie 2018 Adobe Systems Incorporated. Wszelkie prawa zastrzeżone. Zrzuty ekranowe produktów Adobe zostały przedrukowane za zgodą 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 i Flash Paper jest / są [a] zarejestrowanym znakiem towarowym lub znakami towarowymi Adobe Systems Incorporated w Stanach Zjednoczonych i / lub innych krajach.