Thứ Sáu, 3 tháng 4, 2009

Cách l àm đồng hồ flash đơn giản

Chào mọi người, hôm nay VN Tim™ giới thiệu cách làm một cái đồng hồ kim đơn giản. Bài này cho những ai chưa biết, có thể có rất nhiều người biết rồi, nhưng mình chỉ muốn giới thiệu cho những người chưa biết làm thôi, vậy ai biết rồi thì thông cảm nha. Tut này làm bằng Flash MX nên có một số phần khác Flash 5, các bạn chú ý.

1. Đầu tiên, bạn hãy mở ra một file mới (tất nhiên rồi), rồi tạo những thứ sau đây:
Graphic chứa cái mặt đồng hồ (bạn có thể import từ ngoài vào, tôi gọi nó là “face”).
Graphic chứa một cái hình tròn nhỏ (để che lên 3 cái kim đồng hồ đó mà, tôi gọi nó là “ovan”).
Một MovieClip (xin viết tắt là MC) chứa hình kim giờ (tôi gọi nó là “hour”).
Một MC chứa hình kim phút (tôi gọi nó là “minute”).
Một MC chứa hình kim giây (tôi gọi nó là “second”).
Ok, xong phần tạo hình.
2. Ở Scene 1, bạn tạo các layer theo các thứ tự từ dưới lên (nêu trước thì ở dưới):
- Layer dưới cùng là layer Face: chứa graphic “face”.
- Layer Hour: chứa MC “hour” và đặt tên cho MC “hour” trong bảng Properties là “h”.
- Layer Minute: chứa MC “minute” và đặt tên cho MC “minute” trong bảng Properties là “m”.
- Layer Second: chứa MC “second” và đặt tên cho MC “second” trong bảng Properties là “s”.
- Layer Ovan: chứa hình tròn “ovan”, che các gốc của kim.
- Và layer nằm ở trên cùng là layer Action dùng để viết ActionScript.
3. Sau khi xong phần thiết kế, bạn đến layer Action và mở bảng Actions lên và bắt đầu viết đoạn action script này vào:
t = new Date();
hour = t.getHours();
minute = t.getMinutes();
second = t.getSeconds();
setProperty("/h", _rotation, hour*30+minute/2);
setProperty("/m", _rotation, minute*6);
setProperty("/s", _rotation, second*6);
Chú ý: có một số phiên bản của Flash bạn phải trừ đi 1 giờ tại dòng lệnh thứ 2 thì đồng hồ mới chính xác được. Thường thì Flash 5 đi nhanh hơn 1 giờ. Nếu bạn bị như vậy thì thay dòng thứ 2 thành: hour = t.getHours()-1;
4. Cơ bản là bạn đã xong tất cả rồi đấy, nhưng muốn đồng hồ chạy được liên tục thì bạn phải insert thêm 1 keyframe nữa tại tất cả các layer ở trên. Vì nguyên lý của Flash là hoạt động xoay vòng, nó sẽ load từ keyframe đầu đến keyframe cuối rồi lại lặp lại như vậy. Nếu bạn không insert thêm một keyframe nữa thì nó chỉ load các dòng lệnh của bạn 1 lần duy nhất, đưa ra kết quả là giờ hiện tại rồi dừng luôn tại đó, giống như đồng hồ chết. Còn nếu insert thêm thì nó sẽ load đi load lại các action script của bạn và đồng hồ sẽ được cập nhật liên tục, vậy là kim sẽ quay thôi.
Tôi xin gởi kèm một cái đồng hồ của tôi, bạn có thể lấy về tham khảo.
Chúc bạn thành công.

Theo ddth.com

Không có nhận xét nào:

Đăng nhận xét