Hiệu ứng gió với Flash CS3 Math.random ()
Bây giờ chúng ta có bông tuyết rơi trong FlashR hệ thống hạt, hãy sửa đổi mã ActionScript 3 một chút. Flake của chúng tôi chỉ rơi thẳng xuống. Nhưng, trừ khi hoàn toàn không có gió, hầu hết các vảy đều xiên xuống. Vì vậy, hãy sử dụng một số phép toán để làm cho vảy của chúng ta di chuyển sang bên phải một chút khi nó rơi xuống. Để thêm tính chân thực, chúng tôi muốn số lượng chuyển động ngang thay đổi khi bông tuyết rơi xuống sân khấu.

Hãy nhớ rằng, trong một trong những hướng dẫn trước đây của chúng tôi trong loạt bài này, chúng tôi đã đặt vảy ở các vị trí khác nhau theo chiều ngang dọc theo đỉnh của sân khấu. Chúng tôi đã làm điều này bằng cách đặt các giá trị khác nhau cho vị trí X cho mỗi vảy. Vì vậy, trong hướng dẫn này, chúng ta có thể sử dụng lại thuộc tính _Snowflower.x để điều khiển chuyển động ngang trong hoạt hình.

Thứ hai, khi chúng tôi tạo ra vảy của mình, chúng tôi đặt các vị trí X và Y ban đầu của flake thành một số ngẫu nhiên.

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

Chúng ta có thể sử dụng cùng Math.random () để kiểm soát lượng chuyển động ngang ngẫu nhiên. Bạn có đoán những gì tiếp theo?

Chúng tôi biết rằng trên mỗi khung hình của bộ phim Flash, chúng tôi gọi chức năng tuyết rơi.

sân khấu.addEventListener (Event.ENTER_FRAME, tuyết rơi);

Hàm này tăng thuộc tính_Snowflower.y thêm 10 cho mỗi khung. Đây là những gì di chuyển flake xuống sân khấu.

_Snowflower.y + = 10;

Nhưng đó là quá nhanh để chúng ta thấy chuyển động ngang tinh tế mà chúng ta sẽ thêm tiếp theo. Vì vậy, hãy làm chậm nó xuống một chút bằng cách thay đổi 10 thành 5.

_Snowflower.y + = 5;

Bây giờ chúng ta có thể sử dụng cùng một mã để di chuyển vảy theo chiều ngang sang phải. Tất cả những gì chúng ta cần làm là thay đổi_Snowflower.y thành_Snowflower.x.

_Snowflower.x + = 10;

Bây giờ, bông tuyết sẽ di chuyển 10 pixel sang phải và giảm 5 pixel ở mỗi khung hình trong phim Flash của chúng tôi. Nhưng, sẽ thực tế hơn nếu chuyển động ngang của bông tuyết là ngẫu nhiên hơn khi nó đi xuống sân khấu. Chúng ta có thể làm điều này bằng cách thay thế số 10 bằng một số ngẫu nhiên trong khoảng từ 0 đến 9. Chúng ta sẽ sử dụng Math.random () để làm điều này.

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

Tiếp theo, chúng tôi thêm mã mới này vào chức năng tuyết rơi và chúng tôi nhận được mã này.

if (_Snowflower.y> 370)
{stage.removeEventListener (Event.ENTER_FRAME, tuyết rơi); }
khác
{_Snowflower.y + = 5;
_Snowflower.x + = Math.random () * 10;}

Nhưng bây giờ khi chúng ta di chuyển vảy sang bên phải, cuối cùng nó có thể vượt ra bên phải màn hình. Hãy nhớ rằng chúng tôi đã dừng bông tuyết nếu nó rơi xuống dưới sân khấu.

if (_Snowflower.y> 370)

Chúng tôi cũng có thể ngăn chặn nó nếu nó vượt ra ngoài phía bên phải của sân khấu. Hãy thêm điều đó vào tuyên bố có điều kiện của chúng tôi. Bởi vì chúng tôi muốn hoạt hình dừng lại nếu điều kiện thứ nhất HOẶC điều kiện thứ hai trong số này là đúng, chúng tôi có thể sử dụng | | toán tử giữa hai điều kiện trong câu lệnh if.

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

Nếu một trong những điều kiện này là đúng, Flash sẽ xóa trình nghe sự kiện ENTER_FRAME.

Đây là mã mới của chúng tôi.
giai đoạn.addEventListener (Event.ENTER_FRAME, tuyết rơi);

var _Snowflower: mcSnowflower;

_Snowflower = new mcSnowflower ();
addChild (_Snowflower);
_Snowflower.x = Math.random () * 510;
_Snowflower.y = Math.random () * 40;

chức năng tuyết rơi (sự kiện: Sự kiện): void
{
if (_Snowflower.y> 370 || _Snowflower.x> 550)
{stage.removeEventListener (Event.ENTER_FRAME, tuyết rơi); }
khác
{_Snowflower.y + = 5; _Snowflower.x + = Math.random () * 10; }
}


Khi bạn nhắn tin cho bộ phim của mình, bông tuyết bây giờ sẽ thay đổi chuyển động ngang của nó khi nó rơi xuống cuối sân khấu. Lưu cảnh tuyết của bạn dưới dạng SnowScene6.fla.

Bản quyền 2018 Adobe Systems Incorporated. Đã đăng ký Bản quyền. (Các) ảnh chụp màn hình sản phẩm Adobe được in lại với sự cho phép của Adobe Systems Incorporated. Adobe, Photoshop, Album Photoshop, Photoshop Elements, Illustrator, InDesign, GoLive, Acrobat, Cue, Premiere Pro, Premiere Elements, Bridge, After Effects, InCopy, Dreamweaver, Flash, ActionScript, Fireworks, Đóng góp, Cap activate, Flash Catalyst và Flash Paper là / là [a] nhãn hiệu đã đăng ký [s] hoặc nhãn hiệu [s] của Adobe Systems Incorporated tại Hoa Kỳ và / hoặc các quốc gia khác.