【lg006.精靈傳說】我是定時器
本章來聊聊精靈傳說之我是定時器~
木頭慣例,先上圖:
實現的效果就是乙個精靈不斷地在跑,不斷地跑?你想累死她嗎?~
所以,當然要讓她休息一下喇~於是...
她每隔2秒鐘休息一次...
說了這麼多,先上**,再聽我解釋,主要要解釋兩樣東西:
1. lgame的定時器,ltimer類
2. 鉤子函式
代碼裡有乙個lmessage控制項,關於它的所有操作,請大家忽略,不要被影響了,它不是本文的研究物件,以後學到控制項的時候再一起**~
1.定時器。
建立定時器很簡單:
ltimer resttimer = new ltimer(2000);
這樣就建立了乙個每隔兩秒執行一次的定時器。
有一點一定要注意,定時器什麼時候開始啟動?當然是由我們來控制喇。
這樣啟動: restimer.start();
ok,很簡單吧?
囉嗦一下:
雖說ltimer是定時器,但是它實際上是不會定做執行任務的。
說得實在一點,它只是乙個計時器,唯一能做的就是,告訴你是否到時間了。
比如我們在早上8點50分40秒的時候啟動了上面建立的定時器,在8點50分42秒或之後,你再去問問這個定時器,它就是告訴你,時間已經到了。
怎麼去問它時間到了沒呢?
很簡單,這樣:resttimer.action(現在的時間);
至於現在的時間怎麼獲得?不是本文討論的範圍咯,其實你可以從**中發現的~
2.鉤子函式。
糟白了?~好吧,再來~
鉤子函式,其實就是乙個空函式,比如:
public void oncreate()
這個oncreate函式每次執行的時候都會呼叫乙個hook()函式,其實這個函式什麼都沒做,這個函式是用來被重寫的~
吶,現在明白了吧?~我們只要重寫hook函式,就能在oncreate函式執行的時候做一些我們想做的事情~
囉嗦一下:
那,那有沒有人想問我,為什麼不直接重寫oncreate函式:
public void oncreate()
個人理解的話,這樣做有危險,萬一有些人,他就是不呼叫super.oncreate()怎麼辦?
那樣我本身oncreate函式需要做事情就沒有完成,這樣就會造成程式出問題。
而使用鉤子的話,oncreate函式本身要完成的事情一定會被執行的,所以不會出現上面提到的問題~
ok~應該大家都明白了~
3.lgame的screen的alter函式。
啥?~怎麼跑出3來了?·不是只有2個麼?~好吧,不管你~
個人理解,alter函式就是乙個鉤子,每次重新整理操作(不太確切,反正就當做是執行緒每次執行的時候)的時候就會被呼叫,具體怎麼被呼叫我是不會告訴你的~(因為我自己都沒有去研究~嘿嘿)。
我們可以把判斷定時器是否到時間的操作放在alter函式裡(這個是官方文件裡舉的乙個例子)。
好吧,囉嗦完了~
原文第一次發布於android-fans論壇: