1. Sử dụng Timer, TimerEvent và getTimer() trong ActionScipt3.
Class Timer, sự kiện TimerEvent thuộc kiểu TimerEvent và hàm getTimer() là những thành
phần rất quan trọng và thường xuyên được sử dụng trong AS3 (áp dụng hầu hết các ứng dụng)
nên mọi người cần nắm bắt kỹ.
Timer kết hợp với TimerEvent – thương được sử dụng với những ứng dụng hoặc trò chơi
yêu cầu sự chính xác về thời gian, một ví dụ cụ thể là trong trò chơi bắn bọ, mọi người có thể
sử dụng Timer để căn thời gian tạo ra các con bọ.
Cách sử dụng
Lấy ví dụ là trò chơi bắn bọ, mọi người muốn tạo ra các con bọ mới trong khoảng thời
gian là 1 giây / 1 con => cứ một giây chúng ta lại gọi hàm để tạo con bọ một lần, ví dụ sau đây
sẽ mô tả cách làm tổng quát.
1. Tạo một instance của class Timer
var timer:Timer = new Timer(1000,10);
// Class timer có hai tham số truyền vào, tham số thứ nhất là thời gian gọi hàm (tính
theo mili giây, một mili giây = 1/1000 giây). Tham số thứ 2 là số lần gọi hàm, nếu mọi
người để giá trị = 0 (đây là giá trị mặc định) thì hàm sẽ được gọi không giới hạn .
Cứ một giây chúng ta lại gọi hàm để tạo ra một con bọ và tổng số con bọ được
tạo ra sẽ là 10 con.
2. Bắt sự kiện TimerEvent để gọi hàm – Nếu không được bắt sự kiện thì class Timer
sẽ không có tác dụng j hết ^_^.
Giả sử như chúng hàm để tạo con bọ của chúng ta là createNewBug(), vậy chúng ta sẽ
bắt sự kiện như sau.
timer.addEventListener(TimerEvent.TIMER, createNewBug);
Cứ 1 giây chúng ta lại gọi hàm createNewBug một lần và số lần gọi tương ứng
với giá trị của tham số thứ 2 truyên vào khi tạo instance của class Timer.(ở đây
là 10 lần).
Lưu ý : class Timer có hai kiểu sự kiện chính cần quan tâm đó là TimerEvent.TIMER
và TimerEvent.TIMER_COMPLETE.
o TimerEvent.TIMER : gọi sự kiện theo thời gian delay(giá trị truyền vào tại
tham số thứ nhất)
o TimerEvent.TIMER_COMPLETE: gọi sự kiện khi số lần gọi theo thời gian
delay đã hết. Ví dụ như ở trên thời gian delay của chúng ta là 1000 milli
giây (tức 1 giây) và số lân gọi là 10 => sau 10 giây thí sự kiện
TimerEvent.TIMER_COMPLETE sẽ xuất hiên (nếu không giới hạn số lần
gọi thì sự kiện này sẽ không xảy ra).
2. 3. Cho thời gian chạy – gọi hàm start()
timer.start();
Lưu ý nếu không gọi hàm start() thì thời gian sẽ không chạy hay nói cách khác là
Timer vẫn chưa được sử dụng. Có thể ngăn thời gian chạy bằng cách gọi hàm
stop().
Đối tượng Timer có 3 hàm chính cần lưu ý là start()=>chạy thời gian, stop()=> ngừng
chạy thời gian() và reset() => reset thời gian và chạy lại từ đầu. Như ví dụ trên nếu
như khi tạo được 5 con bọ bạn sử dụng hàm stop() thì việc tạo con bọ sẽ ngưng lại
và khi bạn tiếp tục gọi hàm start() thì thời gian sẽ tiếp tục chạy và 5 con bọ còn lại sẽ
được tạo nốt. Tuy nhiên nếu bạn dùng hàm reset() thì các con bọ sẽ được tạo lại từ
đầu và thay vì tạo 5 con còn lại, nó sẽ tính lại từ đầu là 10 con ^_^..
4. Viết hàm để tạo con bọ (đây là bài tập các bạn đã làm nên mình chỉ viết code mình
họa^_^).
function createNewBug(e:TimerEvent):void
{
//các mã lệnh để tạo mới một con bọ
}
Tại function trên:
- createNewBug là tên hàm tương ứng với hàm bạn gọi khi bắt sự
kiện
- tham số truyền vào e:TimerEvent => TimerEvent là kiểu sự kiện
sử dụng. Để dễ hiểu các bạn nhớ rằng khi các bạn bắt các sự
kiện như Event, MouseEvent ,TimerEvent …. Thì tham số bên
trong hàm cũng sử dụng kiểu tương ứng như thế ^_^.
Đầy đủ các mã lệnh của chúng ta sẽ là
var timer:Timer = new Timer(1000,10);
timer.addEventListener(TimerEvent.TIMER, createNewBug);
timer.start();
function createNewBug(e:TimerEvent):void
{
//Các mã lệnh để tạo con bọ
trace(“Welcome BABY BUG !!!”);
}
3. Đối với các bạn đã nghỉ một số buổi và chưa hiểu hết vấn đề có thể viết các đoạn mã
lệnh trên vào timeline trong Flash và sử dụng các hàm trace() xem kết quả (ai chưa hiểu
liên hệ với mình ngay trong buổi tới để nắm rõ vì giai đoạn sau là nước rút rồi T_T)
Sử dụng getTimer():
getTimer() là một function đặc biệt dùng để tính thời gian từ lúc bắt đầu chạy chương
trình flash player(của chúng ta là từ lúc bật file SWF). Hàm này sẽ trả về một giá trị milli giây
tương ứng với thời gian chạy chương trình.
getTimer() rất rất quan trọng và được sử dụng tùy theo mục đích của mỗi người (cụ thể
nhất là làm đồng hồ tính thời gian trong một trò chơi, làm các chuyển động yêu cầu tính chính
xác cao…)
Cách sử dụng : chỉ có một – import và sử dụng ^_^. (ai chưa hiểu về import buổi tới
cũng liên hệ với mình ngay Y_Y).
Mọi người hãy viết mã lệnh sau trực tiếp trên timeline :
import flash.utils.getTimer;
addEventListener(Event.ENTER_FRAME, checkTime);
function checkTime(e:Event):void
{
trace(getTimer()); //thời gian chạy chương trình sẽ được hiển thị theo millisecond
}
OK: Bài tập cho phần này là hãy làm một đồng hồ điện tử hiển thị số thời gian chạy
chương trình.