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

【LGame入门学堂016.结束入门】进阶仪式之onTouchEvent触发流程

 
阅读更多

【LGame016.结束入门】进阶仪式之onTouchEvent触发流程


关键字:LGame 入门 控件onTouchEvent
笨木头花心贡献,啥?花心?不呢,是用心~

转载请注明,原文地址:http://blog.csdn.net/musicvs/article/details/7579718

位,谢谢你们愿意看我的文字,虽然LGame入门学堂的教程,每篇的阅读量平均不到200次,但是,我已经很欣慰了,我只是一个刚毕业9个月的小屁孩。感谢每一位看我文字的朋友,是你们给了我坚持的力量。


再此,我想宣布一个不幸的消息:LGame入门学堂要结束了。

这是最后一篇教程,LGame系列教程要暂停更新了。


原因只有一个:工作上遇到麻烦了,连生活费都没有了。


的项目组会最后拼几周,老大说一周内发布第一个版本,不再修改了。

这是我最后一次相信老大,因为我的血汗代码已经被毁容了34次了,我没办法再容忍了。木头也要吃饭的。


果我有幸度过这个难关,我将继续更新LGame系列教程,到时候就不是入门学堂咯,是LGame进阶修炼,我将会以讲解源码为主(当然,我能力有限,不会很深入的)。


好了,谢谢听我废话。


这次我们来看看LGame的触屏事件是如何传递到Screen的,也就是我们最终看到的游戏画面。

我研究了好几个小时的源码了,如果还是说错,请一定要指正我。


大致的流程如下图所示:

2.png

LgameAdnroid2DView继承了SurfaceView,做游戏的开发的各位,应该很清楚,它是用来绘制游戏画面的。


LgameAndroid2Dactivity就不解释了,大家都知道。


Lhandler是什么呢?句柄,应该是windows编程用的最多的吧?(我可没有多少windows编程的经验),按照我的理解,它就是存放了一堆对象的引用,一般来说,这些对象都是全局唯一的,当然,Lhandler也是全局唯一的。也就是说,Lhandler可以让我们很方便地获取一些对象的引用,比如LgameAdnroid2Dview对象、LgameAndroid2Dactivity对象,都会保存到Lhandler里。


Screen,不用我解释了吧?我们经常用的吖,就是我们最终表现出来一个又一个的游戏画面。


Lflicker,这我可不太懂,但是我知道它有一个很重要的功能:传递屏幕手势事件。它有一个GestureDetector对象,GestureDetector主要是用来获取手势事件的,大家百度一下,比我解释的好多了。



好喇~


onTouchEvent首先会到达LgameAdnroid2Dview


然后在LgameAdnroid2DviewonTouchEvent里会调用LgameAndroid2DactivityonTouchEvent


activity里的onTouchEvent又会调用LhandleronTouchEvent


LhandleronTouchEvent里又会调用ScreenLflickeronTouchEvent


乱是不?~其实就是一层层调用函数而已,最主要的就是最后调用了ScreenonTouchEvent,这样,我们就能灵活地使用触屏事件了。


后再来解释一下LflickeronTouchEvent是怎么回事吧,在这里,又调用了GestureDetectoronTouchEvent,晕了,这么多onTouchEvent很烦吧?没事喇,其实就是一个苹果传来传去而已,没啥高级的事情。


前说了,GestureDetector是监听手势事件,那跟它的onTouchEvent有什么关系呢?有的,手势事件也是通过触屏事件来判断的,所以,必须把触屏事件传给GestureDetectorGestureDetector再由此判断手势事件。



说了这么多,没有代码就是乱,对不对?那,看代码呗:


view.png
activiy.png
handler.png
screen.png
flicker.png
detector.png

什么没有人问我,是谁把onTouchEvent传递给LgameAdnroid2Dview的呢?好吧,其实我也很想知道,我尝试去寻找,可惜我能力不足,希望有高人指点。



好喇,结束了。


LGame入门学堂结束了,希望有缘再见。

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

http://www.android-fans.net/forum.php?mod=viewthread&tid=1865#lastpost

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics