Lisää Math.random () -menetelmää hiukkasjärjestelmässä
Viimeisessä opetusohjelmassamme valmistimme lumisadeanimaation Flash CS3 -hiukkasjärjestelmällemme. Ensin loimme ja animoimme yhden lumihiutaleen. Sitten loimme monia animoituja lumihiutaleita lumisateiden animaation loppuun saattamiseksi. Kun testimme elokuvaa, emme kuitenkaan olleet kovin tyytyväisiä tuloksiin, koska lumihiutaleet näyttävät puuttuvan lavan vasemmasta alakulmasta.

Mitä voimme tehdä animaatiomme säätämiseksi? Kuten meillä on nyt koodattu, lumihiutale voi aloittaa elämänsä missä tahansa lavan yläosaa pitkin, välillä 0 - 510 X-akselilla. Sitten tämä lumihiutale kulkee alaspäin kulmasuunnassa oikealle. Näyttää siltä, ​​että juuri tämä kulmasuunta aiheuttaa lumihiutaleiden puuttuvan lavan vasemmasta alakulmasta. Voisimme poistaa koodin, joka luo kulmaisen liikkeen, ja lumihiutaleemme putoavat vain suoraan lavalle. Jos tekisimme tämän, lumisade peittäisi koko vaiheen, mutta menettäisimme tuulen illuusion, jota kulmaliike simuloi.

Oletetaan, että haluamme pitää tämän tuulen illuusion ja siksi meidän on pidettävä kulmaliike. Kuten edellä mainittiin, lumihiutaleemme voivat alkaa mistä tahansa lavan yläosasta. Kuitenkin jopa lumihiutaleet, jotka alkavat pudota lavan vasemmalta puolelta (0-asennossa X-akselilla), laskeutuvat lavan alaosaan, jättäen vasemman alueen tyhjäksi. Kuinka voimme muuttaa koodiamme niin, että osa lumihiutaleista tulee lavalle ala-pisteessä pystysuoraa Y-akselia pitkin ja putoaa siten lavan vasemman kulman poikki. Tutkimatta liikaa matematiikkaa tämän aloittelijan opastukselle, meidän on aloitettava lumihiutaleiden luominen vasemmalla olevan lava-alueen ulkopuolelle. Vaikka nämä lumihiutaleet ovat näkymättömiä elämäänsä alkaessaan, ne putoavat ainakin puolessa suunnassa pystysuoraan Y-akseliin alas ennen kuin ne astuvat lavalle ja tulevat näkyviksi. Tällä tavalla varmistamme, että nämä lumihiutaleet putoavat lavan vasemman alakulman yli.

Tällä hetkellä tuotamme satunnaislukua_Snowflake.x-omaisuudelle. Muista, että _Snowflake.x -ominaisuus hallitsee lumihiutaleidemme alkuperäistä X-sijaintia. Tämä alkuasento voi olla mikä tahansa luku välillä 0 - 510 X-akselilla.

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

Jos käsketään Flashia käyttämään numeroa välillä -350–510, negatiivisella numerolla alkavat lumihiutaleet ovat lumihiutaleita, jotka lopulta putoavat lavan vasemman alakulman yli. Voimme tehdä tämän lisäämällä -350 satunnaislukuun, joka luodaan Math.random () -menetelmällä.

_Snowflake.x = -350 + Math.random () * 510;

Vaihda tämä koodirivi ja testaa elokuvasi. Mitä tapahtui? Korjasimme ongelmamme ja aiheutimme uuden. Nyt lumihiutaleet puuttuvat lavan oikeasta yläkulmasta. Miksi? Ominaisuuden_Snowflake.x suurin lukumäärä (lumihiutaleen sijainti X-akselia pitkin) on 160 (510 - 350). Muussa X-akselin välillä välillä 161–550 ei ole lumihiutaleita, ja siksi oikeassa yläkulmassa ei ole lunta. Kuinka voimme saada_Snowflake.x -ominaisuuden numeron 0 - 550? Voimme laajentaa satunnaisluvun alueen välillä 0 - 900 (550 + 350).

_Snowflake.x = -350 + Math.random () * 900;

Vaihda koodi ja testaa uudelleen. Se toimii. Olemmeko valmiita? Ei, jos annat tämän animaation ajaa jonkin aikaa, huomaat, että se alkaa käyttää tietokoneesi resursseja. Meidän on tehtävä joitain muutoksia ActionScriptiin, jotta se olisi tehokkaampi.

Huomaa - Tämä animaatiokoodi ei ole täydellinen, ennen kuin olet saavuttanut opasarjan lopun. Älä käytä tätä epätäydellistä koodia Flash-projekteissasi.

Tekijänoikeus 2018 Adobe Systems Incorporated. Kaikki oikeudet pidätetään. Adobe-tuotteen näyttökuva (t) uusitaan Adobe Systems Incorporatedin luvalla. Adobe, Photoshop, Photoshop Album, Photoshop Elements, Illustrator, InDesign, GoLive, Acrobat, Cue, Premiere Pro, Premiere Elements, Bridge, After Effects, InCopy, Dreamweaver, Flash, ActionScript, Ilotulitteet, Contribute, Captivate, Flash Catalyst ja Flash Paper on / on joko [a] rekisteröity tavaramerkki (t) tai Adobe Systems Incorporatedin tavaramerkki (t) Yhdysvalloissa ja / tai muissa maissa.


Video-Ohjeita: CppCon 2016: Cheinan Marks “I Just Wanted a Random Integer!" (Saattaa 2024).