大伙儿晚上今天瞎琢磨了一天,搞了个小玩意儿,寻思着分享一下我这鼓捣安卓上“幻想蝴蝶飞舞”的经历。这纯粹是闲得慌,突然就想看看手机屏幕上要是有蝴蝶飞来飞去是个啥样。
最初的念头
起因特简单,就是前几天瞅见公园里那些花花草草,偶尔有几只蝴蝶飞过,就觉得挺美的。然后脑子里就冒出个想法:能不能让这蝴蝶“飞”到我手机里?不是那种死板的壁纸图,是真能动弹的那种,扑棱扑棱翅膀,到处飞飞。
动手开干
说干就干,我这人就这样,一有想法就憋不住。
- 找素材:第一步,那肯定是得有蝴蝶。我就上网搜罗了一堆蝴蝶的图片,最好是那种翅膀张开的,背景透明的PNG图,这样抠图都省了。找了几张瞅着还顺眼的,颜色鲜艳点的,毕竟是“幻想”嘛得有点梦幻色彩。
- 搭个台子:打开我那尘封已久的Android Studio,新建了个空项目。琢磨着先整个简单的界面,就一个背景,然后让蝴蝶在上面飞。
- 把蝴蝶放上去:先把一张蝴蝶图片搁屏幕上试试。用ImageView控件,加载图片,一只静态的蝴蝶杵在那儿,跟标本似的,没劲。
小编温馨提醒:本站只提供游戏介绍,下载游戏推荐89游戏,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
让蝴蝶“活”起来
这才是重点,也是最折腾人的地方。
第一次尝试:瞎飞。 我一开始想得简单,就寻思着弄个定时器,隔一小段时间就随机改改蝴蝶图片的坐标。结果?那蝴蝶跟抽风一样,瞬移!唰一下在这,唰一下又跑那儿去了,根本不是飞,倒像是受惊的蚂蚱,太蠢了。
第二次尝试:平滑一点。 我寻思不行,这飞得也太假了。蝴蝶飞舞得有那种轻盈感,得连贯。我就开始研究安卓里头那个动画,什么属性动画之类的。试着让它的X、Y坐标慢慢变。你别说,这么一改,确实比之前好多了,至少它是在“飘”了,不是在“跳”了。
琢磨飞行轨迹: 光飘还不行,蝴蝶飞起来不是瞎撞的,它得有点儿方向感,还得会拐弯。我就想,能不能给它设定几个看不见的目标点,让它朝着目标点飞,到了一个再换下一个。然后为了让它飞得自然点,不是走直线,我就给它的飞行路径上加了点随机的偏移,让它飞起来有点S形,或者不规则的曲线,模仿那种在花丛中穿梭的感觉。
翅膀得动! 光会飞,翅膀不动也不行,跟纸片飘似的。我就准备了两张蝴蝶的图片,一张翅膀张开,一张稍微合拢一点。然后用动画让这两张图快速切换,视觉上看起来就像翅膀在扇动了!虽然简单粗暴,但效果还行。
搞一群蝴蝶
一只蝴蝶太孤单,我想象的是一群蝴蝶翩跹起舞的景象,像电视里云南那种蝴蝶谷似的,漫天都是。于是我就复制粘贴,搞了好几只蝴蝶出来。每只蝴蝶都用差不多的逻辑,但是给它们初始位置、飞行速度、目标点都加上随机性,这样它们就不会都飞成一个样了。
遇到的小麻烦:
- 飞出界: 一开始没注意,好几只蝴蝶直接飞出屏幕不见了,跟断了线的风筝似的。后来加了边界检测,快飞到屏幕边缘的时候,就让它掉头往回飞。
- 卡顿: 蝴蝶一多,动画计算量也上去了,稍微配置差点的手机可能就有点卡。我就琢磨着优化,比如减少一些不必要的计算,或者降低动画的帧率啥的,在流畅和效果之间找个平衡点。
加点“幻想”的调料
既然标题叫“幻想蝴蝶”,那总得有点不一样的。我给背景换了个深邃点的星空图,或者那种雾蒙蒙的森林图片。然后,我还试着给蝴蝶飞过的地方加了点淡淡的拖尾效果,用的粒子系统,一闪一闪的,就像仙女棒划过一样,增加了点梦幻感。不过这玩意儿也挺吃性能的,没敢搞太复杂。
最终瞅瞅效果
折腾了大半天,屏幕上终于有那么一群五颜六色的蝴蝶,在背景的衬托下,各自扑扇着翅膀,悠哉悠哉地飞来飞去。虽然离专业动画还差得远,但看着自己一手鼓捣出来的这个小效果,心里头还是挺得劲的。
总结一下,这回实践主要就是熟悉了一下安卓的自定义View绘制、简单的动画实现还有多对象的管理。过程挺有意思,从一个简单的想法,一步步把它变成现实,虽然中间踩了不少坑,但解决问题的过程本身也挺有成就感的。下次有啥好玩的想法再来跟大家分享!