`
mmdev
  • 浏览: 12846874 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

【LG006.精灵传说】我是定时器

 
阅读更多

【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() {
init();
showScreen();
hook(); // 我是钩子
}


个onCreate函数每次执行的时候都会调用一个hook()函数,其实这个函数什么都没做,这个函数是用来被重写的~
呐,现在明白了吧?~我们只要重写hook函数,就能在onCreate函数执行的时候做一些我们想做的事情~

啰嗦一下:
,那有没有人想问我,为什么不直接重写onCreate函数:
public void onCreate() {
super.onCreate();
// 在这里做我们想做的事情
}

人理解的话,这样做有危险,万一有些人,他就是不调用super.onCreate()怎么办?
那样我本身onCreate函数需要做事情就没有完成,这样就会造成程序出问题。
而使用钩子的话,onCreate函数本身要完成的事情一定会被执行的,所以不会出现上面提到的问题~

OK~应该大家都明白了~


3.LGame的Screen的alter函数。
?~怎么跑出3来了?·不是只有2个么?~好吧,不管你~

人理解,alter函数就是一个钩子,每次刷新操作(不太确切,反正就当做是线程每次执行的时候)的时候就会被调用,具体怎么被调用我是不会告诉你的~(因为我自己都没有去研究~嘿嘿)。
我们可以把判断定时器是否到时间的操作放在alter函数里(这个是官方文档里举的一个例子)。
好吧,啰嗦完了~

源码下载:请移步Android-Fans论坛

原文第一次发布于Android-Fans论坛:

http://www.android-fans.net/forum.php?mod=viewthread&tid=1525&page=1&extra=#pid4524


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics