Thứ Bảy, 18 tháng 6, 2011

Random snow

Trong bài này, mình sẽ hướng dẫn các bạn cách làm tuyết rơi.
Bảo đảm sau khi làm xong, bạn sẽ thích mê!

Giờ mình bắt đầu hen!

1. Khởi động Macromedia Flash 2004

2. Tạo một tập tin Flash mới bằng cách click chọn menu File --> New --> Flash Document. Nhấn OK để chấp nhận.

3. Thay đổi màu nền bằng màu đen (mình sẽ cho tuyết trắng rơi vào ..ban đêm ) : Chọn menu Modify --> Document. Chọn màu đen trong Background color. Click OK để chấp nhận.

4. Bạn kiếm hình một bông tuyết, tiến hành insert bông tuyết vào Stage (màn hình làm việc của Flash):
Chọn menu File --> Import --> Import to Stage. Sau đó chọn hình cần insert. Click Open để tiến hành chèn.

5. Tiến hành convert bông tuyết thành 1 MovieClip như sau (để viết lệnh trên đối tượng này): Click chọn bông tuyết, click chuột phải, chọn Convert to Symbol. Xuất hiện hộp thoại Convert to symbol, đặt tên cho MovieClip trong khung Name. Chọn Movie clip trong mục Behavior. Nhấn OK để chấp nhận.

6. Nhấn F9 để mở cửa sổ Action. (Cửa sổ dùng để viết lệnh)

7. Nhấn chuột trên MoviClip bông tuyết. Sau đó viết lệnh trong cửa sổ Action như sau:

// Khởi tạo vị trí x, y, độ xoay Rotation, đồ mờ alpha, kích thước xscale, yscale của hình là một giá trị ngẫu nhiên.
onClipEvent (load)
{
this._x = Stage.width * Math.random()
this._y = Stage.height * Math.random()
this._rotation = 360 * Math.random()
this._alpha = 10 + Math.random() * 100;
this._xscale = this._yscale = 60 + 40 * Math.random()
}

// Tạo độ rung nhẹ, độ xoay rotation và xử lý biến mất chạm biên dưới màn hình


onClipEvent (enterFrame)
{
nTemp = 1-2*random(2)
nSpeedX = nTemp * Math.random()
nSpeedY = -3 * Math.random()
nRotation = Math.random() * 1 + 0.500000
this._x = this._x - nSpeedX;
this._y = this._y - nSpeedY;
this._rotation = this._rotation + nRotation;

if (this._y > 480)
{
this._alpha = 0
this._y = 0 - nSpeedY
this._alpha = 10 + Math.random() * 100;
}
}

8. Cũng tạm ổn. Bạn nhấn Ctrl + Enter chạy thử. Cũng tuyệt phải ko? Nhưng nó chỉ xuất hiện có 1 bông tuyết!!?!!
9. Để tạo nhiều bông tuyết xuất hiện trên màn hình. Bạn cần sử dụng hàm:
duplicateMovieClip(target, newname, depth)

trong đó:
+ target: Tên MovieClip gốc
+ newname: tên MovieClip được sao chép
+ depth: độ sâu của đối tượng, nó là một số và duy nhất cho một đối tượng. Nếu 2 đối tượng có cùng chỉ số depth thì có thể 1 trong 2 đối tượng sẽ không xuất hiện trên màn hình.

10. Cách tạo thật nhiều bông tuyết:
- Click chọn bông tuyết và đặt tên cho đối tượng này như sau: Mở cửa sổ Properties (ctrl + F3). Trong khung Instance Name, đặt tên cho bông tuyết là snow.
- Click chọn keyframe đầu tiên trên thanh timeline

- Trong cửa sổ Action, ta viết lệnh như sau:

for(var i =0; i<200; i++)
{
duplicateMovieClip("snow","snow"+i, i);
}

Đoạn lệnh trên tạo ra 200 bông tuyết

11. Xong rùi, giờ bạn chỉ cần nhấn Ctrl + Enter để thưởng thức ... tuyết

Chúc các bạn thành công khi làm ..bông tuyết!

---------------------

thank bro mot phát nhé. Bài viết hay lắm, cái này mà chèn hình một chàng trai cầm đóa hoa đứng dưới đất ngước nhìn lên phòng cô gái thì ....tuyệt

----------------------

Nhưng nói thật nhé, tuyết này có cái nền đen, lại rơi chưa thật mịn hơi bị...cà giựt sao ấy, chắc phải tăng frame lên quá àh cũng nên tăng tốc độ nữa

----------------------

Có 2 cách để chỉnh theo ý của bạn:

- Nếu bạn thích tuyết rơi đều, ko có ...nhanh chậm ngẫu nhiên.
Bạn chỉ cần thay đổi giá trị của biến nSpeedY thành một số cố định chứ không phải là một số ngẫu nhiên.
VD: nSpeedY = -2 (nhanh chậm tùy bạn)

onClipEvent (enterFrame)
{
nTemp = 1-2*random(2)
nSpeedX = nTemp * Math.random()
nSpeedY = -2
nRotation = Math.random() * 1 + 0.500000
this._x = this._x - nSpeedX;
this._y = this._y - nSpeedY;
this._rotation = this._rotation + nRotation;

if (this._y > 480)
{
this._alpha = 0
this._y = 0 - nSpeedY
this._alpha = 10 + Math.random() * 100;
}
}



- Nếu thích tốc độ tuyết rơi nhanh chậm ngẫu nhiên mà ko giựt, bạn chỉ cần di chuyển dòng lệnh
nSpeedY = -3 + Math.random lên trên sự kiện onClipEvent (load) là được:

onClipEvent (load)
{
this._x = 800 * Math.random()
this._y = 600 * Math.random()
this._rotation = 360 * Math.random()
this._alpha = 10 + Math.random() * 100;
this._xscale = this._yscale = 60 + 40 * Math.random()
nSpeedY = -3 * Math.random()
}

2 nhận xét:

Ngọc Bích nói...

https://sites.google.com/site/gocswf/home

Ngọc Bích nói...

http://www.actionscript.org/resources/articles/90/1/Maths-Functions-including-Random/Page1.html

Đăng nhận xét

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | 100 Web Hosting