日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android 模拟下雪的效果

發(fā)布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 模拟下雪的效果 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最近在模擬一個android游戲,其中看到一個下雪的效果。到網(wǎng)上搜了很久發(fā)現(xiàn)大部分用的都是搜索引擎用的粒子效果模擬的。

自己沒用過android的游戲引擎,于是就決定自己寫一個吧。


網(wǎng)上找到一個“天女散花”的demo,稍加改造就成這個下雪的demo。天女散花下載地址;點擊打開鏈接


下雪的效果,無非就是讓屏幕上的“雪花”的圖片不停的被重繪。

這里下雪的動作,需要用一個線程控制。

/** 負(fù)責(zé)做界面更新工作 ,實現(xiàn)下雪*/private RefreshHandler mRedrawHandler = new RefreshHandler();class RefreshHandler extends Handler {@Overridepublic void handleMessage(Message msg) {//snow.addRandomSnow();snow.invalidate();sleep(100);}public void sleep(long delayMillis) {this.removeMessages(0);sendMessageDelayed(obtainMessage(0), delayMillis);}};
線程啟動的時候,初始化雪花圖片,把圖片加載到內(nèi)存之中。

然后讓線程每隔一段時間重繪一次,重繪的時候增加y軸的距離,達(dá)到下雪的效果。


@Overridepublic void onDraw(Canvas canvas) {super.onDraw(canvas);for (int x = 0; x < 10; x += 1) {if (snows[x].y >= view_height) {snows[x].y = 0;addRandomSnow();}// 雪花下落的速度snows[x].y += 5;//雪花飄動的效果if (RNG.nextBoolean()) {// 隨機(jī)產(chǎn)生一個數(shù)字,讓雪花有水平移動的效果int rng = RNG.nextInt(3);snows[x].x += 2 - rng;}canvas.drawBitmap(bitmap_snows[x / 6], ((float) snows[x].x),((float) snows[x].y), mPaint);}}
雪花的初始位置是y軸的頂點,我這里設(shè)置了10朵雪花。開始的時候,隨機(jī)產(chǎn)生10個x軸方向的數(shù)字,作為雪花再x軸的起始位置。

當(dāng)雪花“飄”出了屏幕之后,y坐標(biāo)重新置0,x坐標(biāo)也重新產(chǎn)生。其中為了達(dá)到雪花靈動的效果,隨機(jī)產(chǎn)生一個x軸的飄動效果。

當(dāng)然,做的效果不是太好,可以優(yōu)化一下:比如,多增加雪花圖片,達(dá)到下雪時雪花有近有遠(yuǎn)的效果。

歡迎有興趣的朋友補(bǔ)充……


下載地址:android下雪demo


總結(jié)

以上是生活随笔為你收集整理的android 模拟下雪的效果的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。