【LGame入門學堂016.結束入門】進階儀式之onTouchEvent觸發流程

來源:互聯網
上載者:User

【LGame016.結束入門】進階儀式之onTouchEvent觸發流程

關鍵字:LGame 入門 控制項onTouchEvent
笨木頭花心貢獻,啥?花心?不呢,是用心~

轉載請註明,原文地址:http://blog.csdn.net/musicvs/article/details/7579718

位,謝謝你們願意看我的文字,雖然LGame入門學堂的教程,每篇的閱讀量平均不到200次,但是,我已經很欣慰了,我只是一個剛畢業9個月的小屁孩。感謝每一位看我文字的朋友,是你們給了我堅持的力量。

再此,我想宣布一個不幸的訊息:LGame入門學堂要結束了。

這是最後一篇教程,LGame系列教程要暫停更新了。

原因只有一個:工作上遇到麻煩了,連生活費都沒有了。

的項目組會最後拼幾周,老大說一周內發布第一個版本,不再修改了。

這是我最後一次相信老大,因為我的血汗代碼已經被毀容了3、4次了,我沒辦法再容忍了。木頭也要吃飯的。

果我有幸度過這個難關,我將繼續更新LGame系列教程,到時候就不是入門學堂咯,是LGame進階修鍊,我將會以講解源碼為主(當然,我能力有限,不會很深入的)。

好了,謝謝聽我廢話。

這次我們來看看LGame的觸屏事件是如何傳遞到Screen的,也就是我們最終看到的遊戲畫面。

我研究了好幾個小時的源碼了,如果還是說錯,請一定要指正我。

大致的流程如所示:

LgameAdnroid2DView繼承了SurfaceView,做遊戲的開發的各位,應該很清楚,它是用來繪製遊戲畫面的。

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

Lhandler是什麼呢?控制代碼,應該是windows編程用的最多的吧?(我可沒有多少windows編程的經驗),按照我的理解,它就是存放了一堆對象的引用,一般來說,這些對象都是全域唯一的,當然,Lhandler也是全域唯一的。也就是說,Lhandler可以讓我們很方便地擷取一些對象的引用,比如LgameAdnroid2Dview對象、LgameAndroid2Dactivity對象,都會儲存到Lhandler裡。

Screen,不用我解釋了吧?我們經常用的吖,就是我們最終表現出來一個又一個的遊戲畫面。

Lflicker,這我可不太懂,但是我知道它有一個很重要的功能:傳遞螢幕手勢事件。它有一個GestureDetector對象,GestureDetector主要是用來擷取手勢事件的,大家百度一下,比我解釋的好多了。

好喇~

onTouchEvent首先會到達LgameAdnroid2Dview,

然後在LgameAdnroid2Dview的onTouchEvent裡會調用LgameAndroid2Dactivity的onTouchEvent,

在activity裡的onTouchEvent又會調用Lhandler的onTouchEvent,

在Lhandler的onTouchEvent裡又會調用Screen和Lflicker的onTouchEvent。

亂是不?~其實就是一層層調用函數而已,最主要的就是最後調用了Screen的onTouchEvent,這樣,我們就能靈活地使用觸屏事件了。

後再來解釋一下Lflicker的onTouchEvent是怎麼回事吧,在這裡,又調用了GestureDetector的onTouchEvent,暈了,這麼多onTouchEvent很煩吧?沒事喇,其實就是一個蘋果傳來傳去而已,沒啥進階的事情。

前說了,GestureDetector是監聽手勢事件,那跟它的onTouchEvent有什麼關係呢?有的,手勢事件也是通過觸屏事件來判斷的,所以,必須把觸屏事件傳給GestureDetector,GestureDetector再由此判斷手勢事件。

說了這麼多,沒有代碼就是亂,對不對?那,看代碼唄:






什麼沒有人問我,是誰把onTouchEvent傳遞給LgameAdnroid2Dview的呢?好吧,其實我也很想知道,我嘗試去尋找,可惜我能力不足,希望有高人指點。

好喇,結束了。

LGame入門學堂結束了,希望有緣再見。

 

 

原文第一次發佈於Android-Fans論壇:

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

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.