Tạo đồng hồ đếm ngược bằng Flex
Đăng trong danh mục Graphic Design, Miscellaneous, Web Design bởi admin | Tags: clock, countdown, Flash, Flex, tutorial, web

flex-countdown-clock-dong-hoc-dem-nguoc-flash
Hôm nay mình sẽ chỉ cho các bạn một làm project nho nhỏ bằng Flex đó là tạo ra một đồng hồ đếm ngược định dạng xuất là file SWF(Flash) để chúng ta có thể dùng trong các sự kiện hay những lúc cần những chức năng đếm ngược (vd: đếm ngược từ 10 giây, 15 giây, 1phút, 2 phút…1 giờ, ….)
Các yêu cầu của đồng hồ đếm ngược này:
- Giao diện rõ ràng để biểu thị thời gian đang chay ngược
- Có các thang thời gian cố định (10s, 15s..)
- Có nút BẮT ĐẦU, STOP
- Có tùy chọn nghe âm thanh khi đếm và âm thanh khi hết giờ
- Hiển thị FULLSCREEN(toàn màn hình) khi chạy chương trình này
.Online Demo
.File chạy (.HTML + .SWF file) (880K)
.Flex Project Files (1.3M)
————————————–
Để nắm được toàn bộ nội dung project, bạn download file rar chứa toàn bộ resource của project ở trên để xem. Hướng dẫn một số phần quan trọng trong project:
1> Trước tiên bạn hãy xem cấu trúc của ứng dụng:

flex-countdown-clock-navigator
2> Một số hàm cần thiết:
a. Khai báo biến:
private var clockCounter:Timer; private var timeInSeconds:Number; [Embed('../assets/tick.mp3')] private var tick_mp3:Class; private var tickSound:SoundAsset = new tick_mp3() as SoundAsset; [Embed('../assets/alarm.mp3')] private var alarm_mp3:Class; private var alarmSound:SoundAsset = new alarm_mp3() as SoundAsset; |
b.Hàm beginCountdown() dùng khi click nút BẮT ĐẦU TÍNH. Công việc chính của hàm này trước tiên là hiển thị và gán các giá trị cần thiết cho các label để bắt đầu tính. Set các tùy chọn enable cho nút Stop…Đồng thời khởi động timer và gán action cho mỗi lần tick bằng hàm timeTick() (Hàm timeTick dùng để gọi các hàm xử lý thời gian hiện tại và hiển thị, đồng thời phát ra âm thanh tick) và gán action khi kết thúc timer là hàm timeEnd().
public function beginCountdown():void { this.timeValue.text = t_time.selectedItem.data; this.timeValue.text = formatTime(int(t_time.selectedItem.data)); bStopCount.enabled = true; bBeginCount.enabled = false; stopImage.visible = false; timeValue.visible = true; tTimeOut.visible = false; this.timeInSeconds = int(t_time.selectedItem.data); clockCounter = new Timer(1000, this.timeInSeconds); clockCounter.addEventListener(TimerEvent.TIMER, timeTick); clockCounter.addEventListener(TimerEvent.TIMER_COMPLETE, timeEnd); clockCounter.start(); stage.displayState = StageDisplayState.FULL_SCREEN; } private function timeTick(e:Event):void { this.displayClockCount(); playTickingSound(); } private function timeEnd(event:TimerEvent):void { tTimeOut.visible = true; stopCountdown(); playAlarmSound(); } |
c.Hàm displayClockCount() sẽ làm chức năng hiển thị thời gian cònlại lên màn hình bằng hàm formatTime().
private function displayClockCount():void { this.timeValue.text = formatTime(clockCounter.repeatCount - clockCounter.currentCount); } |
d.Hàm formatTime(): Một trong những hàm cần thiết của ứng dụng là hàm formatTime(). Hàm này dùng để định dạng fontsize để có thể hiển thị các chữ số cho phù hợp tương ứng với số thời gian còn lại. Ở đây mình triển khai cố định 1 số font-size theo màn hình chuẩn tối thiểu là 1024×768. Nếu nhu cầu của các bạn dành cho các màn hình nhỏ hơn, các bạn có thể edit lại hàm này 1 xíu, cho phép font-size tự động dựa vào chiều rộng của vùng hiển thị để đưa ra font-size chính xác hơn và đảm bảo tất cả các con số để có thể được hiển thị trên mọi kích thước màn hình:
public function formatTime(input:Number):String { var output:String = ""; var hour:String = ""; var min:String = ""; var sec:String = ""; //hien thi gio:phut:giay if(input >= 3600) { //tinh so gio hour = String(int(input/3600)); min = String(int((input%3600)/60)); if(min.length < 2) min = "0" + min; sec = String(int((input%3600)%60)); if(sec.length < 2) sec = "0" + sec; output = hour + ":" + min + ":" + sec; timeValue.setStyle("fontSize", 50); } else if(input >= 60) { //tinh so phuc min = String(int(input/60)); sec = String(int(input%60)); if(sec.length < 2) sec = "0" + sec; output = min + ":" + sec; timeValue.setStyle("fontSize", 70); } else { output = String(input); if(input >= 10) timeValue.setStyle("fontSize", 100); else timeValue.setStyle("fontSize", 200); } return output; } |
—-
Hy vọng bài viết này sẽ giúp bạn phần nào trên con đường master ngôn ngữ Flex.
Bài viết liên quan:
3 Lời bình cho bài viết “Tạo đồng hồ đếm ngược bằng Flex”
Viết lời bình
Bình luận mới nhất
- Karaoke Vietnam - Ứng dụng Android đầu tay
"Em cũng đang định làm 1 app. Anh có thể cho em vài gợi ý về server và" - thang - [Slide] Hội thảo: Heavy Web Optimization – Front-end
"Trên blog cá nhân của mình cũng có những bài viết cho việc tối ưu hóa " - TMQuang - phpmailer gởi mail SMTP bằng Gmail/Google Apps
"mình muốn đính kèm theo tập tin thì sao nhỉ" - Hòa - Mạng xã hội và thị trường Châu Á
"@admin, "Còn về mô hình “" - Dior - Lưu dữ liệu đa ngôn ngữ trong Database
"@viet_it_pro, cau truy " - viet_it_pro - Lưu dữ liệu đa ngôn ngữ trong Database
"@Quang Huỳnh, Bài bình luậ" - viet_it_pro - [Slide] Hội thảo: Heavy Web Optimization – Front-end
"Anh ơi cho em hỏi, làm thế nào để nhận mail google bằng php, anh có th" - Đặng Trung Kiên - Làm IT nên đọc ebook của nhà xuất bản nào?
"@Lê Hoàng Dũng, Mình thấy" - quang - Thư viện Khoa học tổng hợp TPHCM
"cảm ơn bài viết, mặc dù đã sinh sống ở Saigon khá lâu , nay mình mới c" - NHUNG - phpmailer gởi mail SMTP bằng Gmail/Google Apps
"Chào anh Tuấn, tut của anh em đã đọc, cảm ơn anh đã chia sẻ. Tuy nhiên" - Trần Đình Trọng
Danh mục
- android (2)
- Business (24)
- Flash (1)
- Graphic Design (16)
- IT Guys (1)
- Javascript (9)
- Miscellaneous (58)
- Photography (9)
- PHP (38)
- Review sách (13)
- Search Engine Optimization (2)
- security (2)
- software (5)
- User Interface Design & Usability (8)
- Web Design (28)
- Web Programming (48)
Lưu trữ
- February 2012 (1)
- January 2012 (1)
- December 2011 (1)
- November 2011 (2)
- September 2011 (2)
- August 2011 (1)
- July 2011 (4)
- June 2011 (2)
- May 2011 (2)
- April 2011 (2)
- March 2011 (2)
- February 2011 (2)
- January 2011 (4)
- December 2010 (6)
- November 2010 (3)
- October 2010 (3)
- September 2010 (5)
- August 2010 (6)
- July 2010 (5)
- June 2010 (2)
- May 2010 (5)
- April 2010 (7)
- March 2010 (8)
- February 2010 (4)
- January 2010 (10)
- December 2009 (12)
- November 2009 (12)
- October 2009 (15)
- September 2009 (16)
- August 2009 (11)
- July 2009 (15)
- November 2008 (1)
- October 2008 (1)
- September 2008 (3)


August 18, 2010 at 5:37 pm
M` đã dow các file về mấy nhưng ko biết khởi động sao? Bạn có thể cho m` hỏi cách cài đồng hồ này voà powerpoint được không? Hj`, mình khá mù mờ mà. Thanks!
[Reply]
November 28, 2010 at 3:38 pm
Mình đang làm trương trình và cần dùng đến File ĐẾM NGƯỢC THỜI GIAN trong vòng 10S. Nhưng mình không biết tạo nó ! Anh em nào có thì giúp mình với ! Mình Cảm Ơn Anh Em Trước !
[Reply]
April 8, 2011 at 1:20 pm
Xin cam on nhieu ! Xem ban demo cua ban rat hay, nhung neu thiet ke them hiển thị total time (neu nhu stop truoc khi het gio )
Chuc vui ve va thanh dat !
[Reply]