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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android 模拟下雪的效果

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

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

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


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


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

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

/** 負責做界面更新工作 ,實現下雪*/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);}};
線程啟動的時候,初始化雪花圖片,把圖片加載到內存之中。

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


@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()) {// 隨機產生一個數字,讓雪花有水平移動的效果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軸的頂點,我這里設置了10朵雪花。開始的時候,隨機產生10個x軸方向的數字,作為雪花再x軸的起始位置。

當雪花“飄”出了屏幕之后,y坐標重新置0,x坐標也重新產生。其中為了達到雪花靈動的效果,隨機產生一個x軸的飄動效果。

當然,做的效果不是太好,可以優化一下:比如,多增加雪花圖片,達到下雪時雪花有近有遠的效果。

歡迎有興趣的朋友補充……


下載地址:android下雪demo


總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。