Himi原創(chuàng),轉(zhuǎn)載務(wù)必注明出處!
原文地址: http://blog.csdn.net/xiaominghimi/archive/2011/06/20/6555828.aspx
首先對(duì)于《賽貝爾曲線》不是很了解的童鞋,請(qǐng)自覺白度百科、google等等...
為了方便偷懶的童鞋,這里給個(gè)《貝賽爾曲線》百科地址,以及一段話簡(jiǎn)述《貝賽爾曲線》:
《貝賽爾曲線》白度百科快速地址: http://baike.baidu.com/view/4019466.htm
貝塞爾曲線又稱貝茲曲線或貝濟(jì)埃曲線,一般的矢量圖形軟件通過它來精確畫出曲線,貝茲曲線由線段與節(jié)點(diǎn)組成,節(jié)點(diǎn)是可拖動(dòng)的支點(diǎn), 線段像可伸縮的皮筋;
上面這一段話其實(shí)就“ 線段像可伸縮的皮筋 ”這一句比較重要,也很容易理解;
至于貝賽爾曲線的實(shí)現(xiàn),在Android中極其的簡(jiǎn)單,因?yàn)樗茿ndroid封裝的一個(gè)方法,這個(gè)能不簡(jiǎn)單么。。。。。。只不過它隱藏的比較深,它隱藏于Path類中,方法如下:
android.graphics. Path .quadTo(float x1, float y1, float x2, float y2)
Since: API Level 1
此方參數(shù)解釋:
第一個(gè)參數(shù):操作點(diǎn)的x坐標(biāo)
第二個(gè)參數(shù):操作點(diǎn)的y坐標(biāo)
第三個(gè)參數(shù):結(jié)束點(diǎn)的x坐標(biāo)
第四個(gè)參數(shù):結(jié)束點(diǎn)的y坐標(biāo)
從API中看出,賽貝爾曲線從API-1就開始支持了;
熟悉方法后,下面就來實(shí)現(xiàn):
SurfaceView框架不多講,看過我博客的都應(yīng)該知道的;
直接看MySurfaceView類,此類繼承SurfaceView ,是游戲的主視圖
這里為了更清晰的講解:這里部分代碼先不貼出來了,最后會(huì)整體貼出,當(dāng)然源碼也是免費(fèi)在最后提供~
首先是定義相關(guān)的成員變量:
本類構(gòu)造函數(shù):
接著我把繪制貝賽爾曲線封裝一個(gè)方法了,函數(shù)如下:
最后是用戶觸屏監(jiān)聽函數(shù)以及邏輯函數(shù):
整個(gè)代碼很easy~主要是貝賽爾函數(shù)的參數(shù),尤其是操作點(diǎn),操作點(diǎn)的各種不同可以實(shí)現(xiàn)不同的效果,這里我簡(jiǎn)單的統(tǒng)一的講操作點(diǎn)設(shè)置成用戶觸屏點(diǎn)的x,y的一半,呵呵偷懶了~嘻嘻~
我把貝賽爾的操作點(diǎn)寫在了邏輯logic()函數(shù)中,不斷的執(zhí)行,并且每次利用nextInt函數(shù)得到隨機(jī)的操作點(diǎn),主要為了讓其曲線不斷的變化從而形成一個(gè)震動(dòng)的曲線運(yùn)動(dòng)軌跡;
ok,效果接圖如下:
這里可能由于圖片是靜止的效果看起來不是很明顯,大家可以運(yùn)行源碼來觀察 ,好了~本節(jié)就這樣吧;下面貼出整個(gè)MySurfaceView的源碼:(最后有本項(xiàng)目的源碼下載地址)
本章源碼下載地址:(仍舊免費(fèi)下載)
http://download.csdn.net/source/3378910
.
.
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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