日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

【Android游戲開發十七】讓玩家自定義手勢玩轉A

系統 2124 0

Himi 原創, 歡迎轉載,轉載請在明顯處注明! 謝謝。

原文地址: http://blog.csdn.net/xiaominghimi/archive/2011/01/14/6137136.aspx

有童鞋問我為什么不用SDK2.1 ,2.2來進行游戲開發,那我這里稍微說兩句:

1.Android SDK 屬于向下兼容!那么低版本可以運行的,高版本基本上更是沒問題!(當然每次SDK的更新也會帶來新功能,或者修改了一些原來的BUG等等,那么其實對于游戲開發來說,如果你的游戲中不需要更高的SDK版本的支持情況下,完全不必去追求最新的SDK?。?

2.使用低版本進行游戲開發這樣能兼顧更多的機型,獲取更多的用戶!

3.大家都知道Android SDK 每次版本的更新,底層代碼也會更健壯和優化了!比如我們公司的網游Android版在G2(SDK1.5)上跑起來稍微有些卡,而在我的手機上(SDK2.2)運行起來流暢的沒說的~各種舒坦~~但是這樣也會帶來一些弊端,比如我們自己游戲如果上來就用高版本SDK進行開發,那么對于性能、內存上到底如何,我們都不會很容易的看出其效果,如果我們用低版本的SDK則會讓我們明顯的感受到性能到底如何~你想想如果你的游戲在1.5 ,1.6上跑起來很流暢,那放在更高版本的SDK機器上更是沒說的啦~

總結:游戲開發中,如果你游戲不需要更高的API的支持,那么推薦基于SDK 1.5和1.6來開發!

在上一篇中我給大家介紹了 觸摸屏手勢操作 ,但是這種觸屏手勢的操作比較有局限性;比如我們都知道Android可以利用手勢來解鎖,比如九宮格形式的,通過自定義的一個單筆畫手勢可以解開屏幕鎖,還可以自定義筆畫手勢來啟動一個應用等,那么這種所謂的筆畫手勢其實就是今天我要給大家講解的 輸入法手勢識別技術! 這種手勢是我們可以自己來自定義,而不像之前的觸屏手勢操作只是利用Android 對一些觸屏動作的封裝罷了。 下面上幾張 手機 自定義 筆劃 手勢 解鎖的的截圖:

【Android游戲開發十七】讓玩家自定義手勢玩轉Android游戲!—Android Gesture之【輸入法手勢技術】 【Android游戲開發十七】讓玩家自定義手勢玩轉Android游戲!—Android Gesture之【輸入法手勢技術】

【Android游戲開發十七】讓玩家自定義手勢玩轉Android游戲!—Android Gesture之【輸入法手勢技術】 左圖中最后一個是自定義解鎖的輸入法手勢~

OK,那么既然利用手勢既然能進行解鎖等操作,那么我們游戲開發中,更是可以加入這一亮點了,比如在游戲中我畫個圓形執行換背景操作,畫個X表示退出游戲等等,等等、哈哈 是不是感覺很有意思了?好的,下面就開始進入講解!

首先本篇主要學習兩點:

1. 如何創建輸入法手勢、刪除輸入法手勢、從SD卡中讀取出手勢文件!

2.當輸入法手勢創建后,如何來匹配出我們的自定義手勢!

下面我們來熟習兩個類和幾個概念:

1. 什么是GestureOverlayView ? 簡單點說其實就是一個手寫繪圖區;

2 . 什么是GestureLibrary ? 這個類是對手勢進行保存、刪除等操作的, 一個存放手勢的小倉庫!

3. 筆劃是什么,字體筆畫? 是的,其實就是跟我們寫字的筆劃一個概念!

4. 什么是筆 類型? 輸入法手勢操作中,筆劃類型有兩種;一種是:單一筆劃,另外一種是:多筆劃

所謂 單一筆劃筆劃就是一筆劃畫出一個手勢,從你手指接觸屏幕開始到你離開屏幕筆畫就會立刻形成一個手勢!一氣呵成!

而多筆劃則是可以在一定緊湊時間內隨意幾筆劃都可!然后超過這個緊湊時間后便會形成一個手勢!

先出項目截圖,簡單說下其功能和操作:

【圖1】 【圖2】

【Android游戲開發十七】讓玩家自定義手勢玩轉Android游戲!—Android Gesture之【輸入法手勢技術】 【Android游戲開發十七】讓玩家自定義手勢玩轉Android游戲!—Android Gesture之【輸入法手勢技術】

圖1界面中分為3塊,從上到下依次是:TextView ,EditText,SurfaceView;然后在SurfaceView后面還有一個覆蓋全屏的GestureOverlayView!

圖2界面是在創建好的手勢中匹配手勢的界面,這里很清晰看出來,找的很對 ~嘿嘿~

先看下main.xml:

xml中注冊的有我們自定義的surfaceview,對此不太熟悉可以去看下【Android2D開發之六】,不多解釋了。關于GestureOverlayView這里也只是簡單的定義了寬高,還有一些重要的屬性設置在代碼中設置了,當然xml也可以設置的;

下面看 MainActivity.java

這個就是MainActivity主要代碼了,其中添加手勢、匹配手勢、遍歷手勢、將手勢轉成圖片這些我都單獨寫成了函數,這樣讓各位童鞋更清晰思路一些。

從以上代碼中我們看出在創建手勢之前,手寫繪圖區(GestureOverlayView)肯定先被創建出來,然后我們就可以在其區域中進行筆劃繪畫手勢了,當然繪畫手勢前,我們也需要設置了筆劃類型,也就是我一開始給大家介紹的~其后最重要的就是手寫繪圖區的手勢監聽器綁定,增加OnGestureListener這個監聽器重寫了四個函數,這里最重要的就兩個函數:

onGestureStarted 和 onGestureEnded ; 手勢開始和手勢結束的監聽函數!

尤其是手勢結束監聽這個函數尤為重要,在其中我設置好幾個條件語句,這么幾個條件一方面是讓大家了解Gesture中一些比較重要常用的方法,另一方面我要 提醒各位童鞋:

如果你設置筆劃類型是多筆劃類型的,那么理想狀態下,應該是在一段緊湊時間內,不管你使用了幾筆劃來繪制手勢,系統都應該在判定你在一定短暫時間內沒有再進行筆劃的時候才應該創建手勢,并且系統響應此函數;

其實錯了,一開始我也這么想,但是發現,不管你設置的筆劃類型是單一的還是多筆劃當你手指離開屏幕,不管你當前是第幾筆,Android都會去響應這個完成函數,so~ 我在這里調用手勢Gesture類中的getStrokesCount()函數,這個函數會記錄在緊湊時間內你繪制手勢的筆劃數,那么根據這個函數我們就可以解決手指離開屏幕總被響應的問題了,因為單一筆劃類型永遠這個值不會大于1!

而 if (event.getAction() == MotionEvent.ACTION_UP) {}寫這個只是給大家演示第二個參數按鍵動作該怎么用;

那么我們下面就來看如何創建一個手勢:

這里也都很好理解,套路類似之前File文件存儲的套路,先判斷SD是否存在,然后是文件是否存在:

如果文件不存在就先直接添加到手勢到手勢倉庫中,然后手勢倉調用gestureLib.save()才算把手勢存到SD卡的手勢文件中。

文件存在的話還要去判定是否文件中包含了相同名字的手勢;當然這里可以不判定是否有相同手勢名存在,然后進行刪除操作!其實也可不刪除,直接添加進去當前新建的手勢;原因看了下面的備注解釋就明白了;

備注 1 :因為gestureLib保存的手勢是個HashMap, key=手勢的名字,value=手勢,所以gestureLib.removeGesture(name, gesture);這種刪除方式只是刪除了手勢,該手勢名字依舊保存在hashmap中,下次還有相同的name手勢存入的時候Hashmap就直接覆蓋本條目了。所以根據Hashmap的特征,我們可以不進行刪除操作,可以直接gestureLib.addGesture(name, gesture);因為如果出現相同的手勢名字的手勢,Hashmap就會根據key(手勢的名字)直接覆蓋其條目的value(手勢)滴~

備注2 :這里也是一種刪除手勢的方式,但是這種方式跟備注1的不同,這里是將Hashmap中的條目刪除,也就是說key和value都被刪去!

下面看下如何把手勢轉成bitmap!

下面是如何遍歷手勢!

下面最后來看看手勢的匹配?。ǔ匾?!自己也搞了許久才找到解決的方法)

那么最后給各位童鞋說一下,其實輸入法手勢操作很是適合游戲中使用,不管是觸摸屏手勢操作還是今天講的輸入法手勢操作如果加到游戲中那都是相當贊的!但是我們公司網游引擎和框架不適合插入手勢 - -、唉~


其實前兩天應該發這篇的,但是因為工作忙了幾天,讓大家久等了,挺不好意思的,所以今天熬夜給大家寫了出來,現在都凌晨 7:00 了~

源碼下載地址: http://download.csdn.net/source/2984328

.

【Android游戲開發十七】讓玩家自定義手勢玩轉Android游戲!—Android Gesture之【輸入法手勢技術】


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!??!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 平遥县| 体育| 乌兰县| 巴马| 松桃| 栾城县| 左权县| 吉木乃县| 迭部县| 大化| 英德市| 成武县| 耿马| 嘉鱼县| 崇礼县| 保山市| 鄂尔多斯市| 哈巴河县| 鸡东县| 长沙市| 静宁县| 交城县| 平度市| 林西县| 元氏县| 民和| 峨山| 达尔| 鄂伦春自治旗| 蚌埠市| 广昌县| 固阳县| 晋中市| 灵台县| 蓝山县| 青州市| 安泽县| 遂宁市| 渑池县| 仙居县| 石阡县|