LG006 精靈傳說 我是定時器

2021-08-26 21:25:54 字數 1996 閱讀 6527

【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論壇: