Kesan Angin dengan Flash CS3 Math.random ()
Sekarang kita mempunyai kepingan salji kita jatuh dalam Flash kitaR sistem zarah, mari kita mengubahsuai kod ActionScript 3 sedikit. Flake kami hanya jatuh ke bawah. Tetapi, melainkan sama sekali tidak ada angin, sebahagian besar serpihan bergerak ke bawah. Oleh itu mari kita gunakan beberapa matematik untuk membuat flake kami bergerak ke kanan sedikit kerana ia jatuh. Untuk menambah lebih banyak realisme, kita mahu jumlah pergerakan mendatar berubah apabila salji salji membuatnya turun ke pentas.

Ingatlah, bahawa dalam salah satu tutorial awal kami dalam siri ini, kami meletakkan serpihan pada kedudukan yang berbeza secara mendatar di sepanjang puncak. Kami melakukan ini dengan menetapkan nilai yang berbeza untuk kedudukan X untuk setiap kepingan. Jadi dalam tutorial ini, kita boleh menggunakan harta _Snowflake.x yang sama sekali lagi untuk mengawal pergerakan mendatar dalam animasi.

Kedua, apabila kita membuat serpihan kita, kita meletakkan kedudukan awal X dan Y serpihan ke nombor rawak.

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

Kita boleh menggunakan Math.random () yang sama untuk mengawal jumlah gerakan mendatar secara rawak. Adakah anda rasa apa yang akan datang?

Kami tahu bahawa pada setiap bingkai filem Flash kami, kami memanggil fungsi salji.

stage.addEventListener (Event.ENTER_FRAME, snowfall);

Fungsi ini meningkatkan sifat_Snowflake.y sebanyak 10 untuk setiap bingkai. Inilah yang menggerakkan serpihan ke atas panggung.

_Snowflake.y + = 10;

Tetapi itu terlalu cepat untuk kita melihat pergerakan mendatar halus yang akan kita tambahkan seterusnya. Jadi, mari perlahan sedikit dengan menukar 10 ke 5.

_Snowflake.y + = 5;

Sekarang kita boleh menggunakan kod yang sama untuk menggerakkan serpihan melintang ke kanan. Apa yang perlu kita lakukan adalah menukar the_Snowflake.y to_Snowflake.x.

_Snowflake.x + = 10;

Sekarang kepingan salji akan bergerak 10 piksel ke kanan dan 5 piksel ke bawah pada setiap bingkai dalam filem Flash kami. Tetapi, ia akan menjadi lebih realistik sekiranya pergerakan melintang salji adalah lebih rawak kerana ia membuat ia turun ke pentas. Kita boleh melakukan ini dengan menggantikan 10 dengan nombor rawak antara 0 dan 9. Kami akan menggunakan Math.random () untuk melakukan ini.

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

Seterusnya, kami menambah kod baru ini kepada fungsi salji dan kami dapati ini.

jika (_Snowflake.y> 370)
{stage.removeEventListener (Event.ENTER_FRAME, snowfall); }
lain
{_Snowflake.y + = 5;
_Snowflake.x + = Math.random () * 10;}

Tetapi sekarang kita bergerak serpihan ke kanan, akhirnya ia akan melampaui sebelah kanan skrin. Ingat bahawa kami menghentikan snowflake jika jatuh di bawah pentas.

jika (_Snowflake.y> 370)

Kita juga boleh menghentikannya jika ia melampaui bahagian kanan pentas. Mari tambahkan itu kepada kenyataan bersyarat kami. Kerana kita mahu animasi berhenti jika sama ada yang pertama atau kedua syarat ini benar, kita boleh menggunakan || pengendali antara kedua-dua syarat dalam kenyataan jika.

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

Sekiranya salah satu daripada syarat ini benar, Flash akan memadamkan pendengar acara ENTER_FRAME.

Berikut adalah kod baru kami.
stage.addEventListener (Event.ENTER_FRAME, snowfall);

var _Snowflake: mcSnowflake;

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

fungsi salji (acara: Acara): tidak sah
{
jika (_Snowflake.y> 370 || _Snowflake.x> 550)
{stage.removeEventListener (Event.ENTER_FRAME, snowfall); }
lain
{_Snowflake.y + = 5; _Snowflake.x + = Math.random () * 10; }
}


Apabila anda teks filem anda, salji salji kini akan mengubah pergerakan mendatarnya apabila jatuh ke bahagian bawah pentas. Simpan adegan salji anda sebagai SnowScene6.fla.

Hak Cipta 2018 Adobe Systems Incorporated. Hak cipta terpelihara. Pukulan skrin produk Adobe (s) dicetak semula dengan kebenaran daripada Adobe Systems Incorporated. Adobe Photoshop, Photoshop Elements, Illustrator, InDesign, GoLive, Acrobat, Cue, Premiere Pro, Elemen Premiere, Bridge, After Effects, InCopy, Dreamweaver, Flash, ActionScript, Fireworks, Contribute, Captivate, Flash Catalyst and Flash Paper adalah sama ada [a] tanda dagangan berdaftar atau tanda dagangan Adobe Systems Incorporated di Amerika Syarikat dan / atau negara lain.