亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

【Android游戲開(kāi)發(fā)十七】讓玩家自定義手勢(shì)玩轉(zhuǎn)A

系統(tǒng) 1838 0

Himi 原創(chuàng), 歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)?jiān)诿黠@處注明! 謝謝。

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

有童鞋問(wèn)我為什么不用SDK2.1 ,2.2來(lái)進(jìn)行游戲開(kāi)發(fā),那我這里稍微說(shuō)兩句:

1.Android SDK 屬于向下兼容!那么低版本可以運(yùn)行的,高版本基本上更是沒(méi)問(wèn)題!(當(dāng)然每次SDK的更新也會(huì)帶來(lái)新功能,或者修改了一些原來(lái)的BUG等等,那么其實(shí)對(duì)于游戲開(kāi)發(fā)來(lái)說(shuō),如果你的游戲中不需要更高的SDK版本的支持情況下,完全不必去追求最新的SDK!)

2.使用低版本進(jìn)行游戲開(kāi)發(fā)這樣能兼顧更多的機(jī)型,獲取更多的用戶!

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

總結(jié):游戲開(kāi)發(fā)中,如果你游戲不需要更高的API的支持,那么推薦基于SDK 1.5和1.6來(lái)開(kāi)發(fā)!

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

【Android游戲開(kāi)發(fā)十七】讓玩家自定義手勢(shì)玩轉(zhuǎn)Android游戲!—Android Gesture之【輸入法手勢(shì)技術(shù)】 【Android游戲開(kāi)發(fā)十七】讓玩家自定義手勢(shì)玩轉(zhuǎn)Android游戲!—Android Gesture之【輸入法手勢(shì)技術(shù)】

【Android游戲開(kāi)發(fā)十七】讓玩家自定義手勢(shì)玩轉(zhuǎn)Android游戲!—Android Gesture之【輸入法手勢(shì)技術(shù)】 左圖中最后一個(gè)是自定義解鎖的輸入法手勢(shì)~

OK,那么既然利用手勢(shì)既然能進(jìn)行解鎖等操作,那么我們游戲開(kāi)發(fā)中,更是可以加入這一亮點(diǎn)了,比如在游戲中我畫個(gè)圓形執(zhí)行換背景操作,畫個(gè)X表示退出游戲等等,等等、哈哈 是不是感覺(jué)很有意思了?好的,下面就開(kāi)始進(jìn)入講解!

首先本篇主要學(xué)習(xí)兩點(diǎn):

1. 如何創(chuàng)建輸入法手勢(shì)、刪除輸入法手勢(shì)、從SD卡中讀取出手勢(shì)文件!

2.當(dāng)輸入法手勢(shì)創(chuàng)建后,如何來(lái)匹配出我們的自定義手勢(shì)!

下面我們來(lái)熟習(xí)兩個(gè)類和幾個(gè)概念:

1. 什么是GestureOverlayView ? 簡(jiǎn)單點(diǎn)說(shuō)其實(shí)就是一個(gè)手寫繪圖區(qū);

2 . 什么是GestureLibrary ? 這個(gè)類是對(duì)手勢(shì)進(jìn)行保存、刪除等操作的, 一個(gè)存放手勢(shì)的小倉(cāng)庫(kù)!

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

4. 什么是筆 類型? 輸入法手勢(shì)操作中,筆劃類型有兩種;一種是:?jiǎn)我还P劃,另外一種是:多筆劃

所謂 單一筆劃筆劃就是一筆劃畫出一個(gè)手勢(shì),從你手指接觸屏幕開(kāi)始到你離開(kāi)屏幕筆畫就會(huì)立刻形成一個(gè)手勢(shì)!一氣呵成!

而多筆劃則是可以在一定緊湊時(shí)間內(nèi)隨意幾筆劃都可!然后超過(guò)這個(gè)緊湊時(shí)間后便會(huì)形成一個(gè)手勢(shì)!

先出項(xiàng)目截圖,簡(jiǎn)單說(shuō)下其功能和操作:

【圖1】 【圖2】

【Android游戲開(kāi)發(fā)十七】讓玩家自定義手勢(shì)玩轉(zhuǎn)Android游戲!—Android Gesture之【輸入法手勢(shì)技術(shù)】 【Android游戲開(kāi)發(fā)十七】讓玩家自定義手勢(shì)玩轉(zhuǎn)Android游戲!—Android Gesture之【輸入法手勢(shì)技術(shù)】

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

圖2界面是在創(chuàng)建好的手勢(shì)中匹配手勢(shì)的界面,這里很清晰看出來(lái),找的很對(duì) ~嘿嘿~

先看下main.xml:

xml中注冊(cè)的有我們自定義的surfaceview,對(duì)此不太熟悉可以去看下【Android2D開(kāi)發(fā)之六】,不多解釋了。關(guān)于GestureOverlayView這里也只是簡(jiǎn)單的定義了寬高,還有一些重要的屬性設(shè)置在代碼中設(shè)置了,當(dāng)然xml也可以設(shè)置的;

下面看 MainActivity.java

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

從以上代碼中我們看出在創(chuàng)建手勢(shì)之前,手寫繪圖區(qū)(GestureOverlayView)肯定先被創(chuàng)建出來(lái),然后我們就可以在其區(qū)域中進(jìn)行筆劃繪畫手勢(shì)了,當(dāng)然繪畫手勢(shì)前,我們也需要設(shè)置了筆劃類型,也就是我一開(kāi)始給大家介紹的~其后最重要的就是手寫繪圖區(qū)的手勢(shì)監(jiān)聽(tīng)器綁定,增加OnGestureListener這個(gè)監(jiān)聽(tīng)器重寫了四個(gè)函數(shù),這里最重要的就兩個(gè)函數(shù):

onGestureStarted 和 onGestureEnded ; 手勢(shì)開(kāi)始和手勢(shì)結(jié)束的監(jiān)聽(tīng)函數(shù)!

尤其是手勢(shì)結(jié)束監(jiān)聽(tīng)這個(gè)函數(shù)尤為重要,在其中我設(shè)置好幾個(gè)條件語(yǔ)句,這么幾個(gè)條件一方面是讓大家了解Gesture中一些比較重要常用的方法,另一方面我要 提醒各位童鞋:

如果你設(shè)置筆劃類型是多筆劃類型的,那么理想狀態(tài)下,應(yīng)該是在一段緊湊時(shí)間內(nèi),不管你使用了幾筆劃來(lái)繪制手勢(shì),系統(tǒng)都應(yīng)該在判定你在一定短暫時(shí)間內(nèi)沒(méi)有再進(jìn)行筆劃的時(shí)候才應(yīng)該創(chuàng)建手勢(shì),并且系統(tǒng)響應(yīng)此函數(shù);

其實(shí)錯(cuò)了,一開(kāi)始我也這么想,但是發(fā)現(xiàn),不管你設(shè)置的筆劃類型是單一的還是多筆劃當(dāng)你手指離開(kāi)屏幕,不管你當(dāng)前是第幾筆,Android都會(huì)去響應(yīng)這個(gè)完成函數(shù),so~ 我在這里調(diào)用手勢(shì)Gesture類中的getStrokesCount()函數(shù),這個(gè)函數(shù)會(huì)記錄在緊湊時(shí)間內(nèi)你繪制手勢(shì)的筆劃數(shù),那么根據(jù)這個(gè)函數(shù)我們就可以解決手指離開(kāi)屏幕總被響應(yīng)的問(wèn)題了,因?yàn)閱我还P劃類型永遠(yuǎn)這個(gè)值不會(huì)大于1!

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

那么我們下面就來(lái)看如何創(chuàng)建一個(gè)手勢(shì):

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

如果文件不存在就先直接添加到手勢(shì)到手勢(shì)倉(cāng)庫(kù)中,然后手勢(shì)倉(cāng)調(diào)用gestureLib.save()才算把手勢(shì)存到SD卡的手勢(shì)文件中。

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

備注 1 :因?yàn)間estureLib保存的手勢(shì)是個(gè)HashMap, key=手勢(shì)的名字,value=手勢(shì),所以gestureLib.removeGesture(name, gesture);這種刪除方式只是刪除了手勢(shì),該手勢(shì)名字依舊保存在hashmap中,下次還有相同的name手勢(shì)存入的時(shí)候Hashmap就直接覆蓋本條目了。所以根據(jù)Hashmap的特征,我們可以不進(jìn)行刪除操作,可以直接gestureLib.addGesture(name, gesture);因?yàn)槿绻霈F(xiàn)相同的手勢(shì)名字的手勢(shì),Hashmap就會(huì)根據(jù)key(手勢(shì)的名字)直接覆蓋其條目的value(手勢(shì))滴~

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

下面看下如何把手勢(shì)轉(zhuǎn)成bitmap!

下面是如何遍歷手勢(shì)!

下面最后來(lái)看看手勢(shì)的匹配!(超重要的!自己也搞了許久才找到解決的方法)

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


其實(shí)前兩天應(yīng)該發(fā)這篇的,但是因?yàn)楣ぷ髅α藥滋?讓大家久等了,挺不好意思的,所以今天熬夜給大家寫了出來(lái),現(xiàn)在都凌晨 7:00 了~

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

.

【Android游戲開(kāi)發(fā)十七】讓玩家自定義手勢(shì)玩轉(zhuǎn)Android游戲!—Android Gesture之【輸入法手勢(shì)技術(shù)】


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 色xxx| 精品国产麻豆 | 色综合精品久久久久久久 | 国产亚洲欧美精品久久久 | 亚洲网在线 | 色狠狠婷婷97 | 国产精品一区在线麻豆 | 午夜看一级特黄a大片 | 欧美在线一级片 | 亚洲不卡视频在线观看 | 老司机精品久久最新免费 | 亚洲综合第一欧美日韩中文 | 在线看福利视频120秒 | 国产色| 日本视频播放免费线上观看 | 久草精品视频 | 中文字幕一区在线 | 性欧美精品久久久久久久 | 奇米色偷偷| 中国一级特黄真人毛片免 | 五月激情六月婷婷 | 亚洲欧美日韩在线观看你懂的 | 色婷婷久久久swag精品 | 日韩视频一区二区 | 欧美色图片区 | 久久爱伊人一区二区三区小说 | 久草精彩视频 | 操操操干干干 | 日韩在线视频免费播放 | 久久美女免费视频 | 一区二区三区高清不卡 | 99久久精品免费看国产四区 | 天天爱天天做久久天天狠狼 | 日韩经典欧美精品一区 | 亚洲久爱 | 欧美综合精品 | 日韩欧美国产高清 | 在线观看国产区 | 亚洲一区二区三区四区 | 9966久久精品免费看国产 | 中国一级特黄大片毛片 |