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 模拟下雪的效果相关推荐
- 用纯css模拟下雪的效果
下雪效果只是一类效果的名称,可以是红包雨等一些自由落体的运动效果,本文就是用纯css模拟下雪的效果,更多效果大家可以自行发挥. 1.前言 由于公司产品的活动,需要模拟类似下雪的效果.浏览器实现动画无非 ...
- CSS:模拟下雪效果动画制作教程
下雪效果只是一类效果的名称,可以是红包雨等一些自由落体的运动效果,本文就是用纯css模拟下雪的效果,更多效果大家可以自行发挥. 1.前言 由于公司产品的活动,需要模拟类似下雪的效果.浏览器实现动画无非 ...
- 纯css模拟下雪效果
效果如其名,想必都见过下雪(可能南方人除外哈哈),但下雪效果只是一类效果的名称,可以是红包雨等一些自由落体的运动效果,本文就是用纯css模拟下雪的效果. 1.前言 由于公司产品的活动,需要模拟类似下雪 ...
- android下雪动画demo,Android的漂浮动画,下雪动画效果剖析.doc
Android的漂浮动画,下雪动画效果剖析 Android 的漂浮动画,下雪动画效果 先看下效果: 1.先得了解下canvas.drawBitmap(mBitmap, mSrcRect, mDestR ...
- 基于粒子(Points)模拟雨雪天气效果
目录 功能描述 最终效果 准备工作 实现原理 参数配置 核心代码 功能描述 在基于THREE.js的场景中,实现雨雪天气效果,可设置下雨.雪的范围.位置.量级以及下落速度. 最终效果 雪 雨 准备工作 ...
- Android开发_android界面效果全汇总
(一)Activity页面切换的效果 先介绍下左右滑动切换Activity,对于复杂的手势原理一样,具体后述. 主要原理为监控触屏事件和手势事件,在触屏事件处理函数中调用手势事件处理函数,表示用户触屏 ...
- android中实现毛笔效果(View 中绘图)
最近有一个项目设计一个APP实现通过触摸屏实现毛笔写字效果.传统的绘画板程序直接通过Path的moveTo和LineTo便可实现简单的线条绘画程序.然而要达到毛笔的笔锋效果则需要更为详细点的设计.我的 ...
- android中实现毛笔效果(View 中画图)
近期有一个项目设计一个APP实现通过触摸屏实现毛笔写字效果.传统的绘画板程序直接通过Path的moveTo和LineTo便可实现简单的线条绘画程序.然而要达到毛笔的笔锋效果则须要更为具体点的设计.我的 ...
- Android实现圆弧滑动效果之ArcSlidingHelper篇
前言 我们平时在开发中,难免会遇到一些比较特殊的需求,就比如我们这篇文章的主题,一个关于圆弧滑动的,一般是比较少见的.其实在遇到这些东西时,不要怕,一步步分析他实现原理,问题便能迎刃而解. 前几天一位 ...
- Android横向伸缩,Android 实现伸缩布局效果示例代码
最近项目实现下面的图示的效果,本来想用listview+gridview实现,但是貌似挺麻烦的于是就用flowlayout 来addview实现添加伸缩的效果,实现也比较简单. mainActivit ...
最新文章
- 【AI】CelebA数据介绍、下载及说明
- oracle 修索引改空间_记一次Oracle分区表全局索引重修的历程
- php redis decr_对于高并发的问题你知道怎么处理吗?php接口如何处理并发问题
- 【嵌入式】C语言程序调试和宏使用的技巧
- 使用RMAN备份控制文件(control file)和系统参数文件(spfile)
- 002-请你回答一下单元测试、集成测试、系统测试、验收测试、回归测试这几步中最重要的是哪一步...
- SAP Spartacus home页面的layout,template,section和slots
- stylus导入时 报错These relative modules were not found
- 信息学奥赛C++语言:梯形面积
- 关于Breeze's MapHack 2.0的一些重要说明
- [JS] - onmusewheel事件(兼容IE,FF)
- wangEditor关闭粘贴样式的过滤,解决小程序中xml溢出报错问题
- Stream之Collectors(toList()
- 电子工程师的自我修养 - 恒流源电路分析
- android 得到屏幕尺寸 状态栏尺寸 标题栏尺寸
- c语言判断两个字母相等,C语言:比较两个字符串是否相等
- 洛谷P2530 [SHOI2001]化工厂装箱员
- git - - - .gitignore
- 精分合并抑郁康复经历分享:如何从死亡边缘回到生的海洋?
- stem32的简单应用