Flutter 模拟火箭发射动画
前言
北京时间 2021 年 10 月 16 日 0 时 23 分,神舟十三号飞船成功发射,目前三名航天员已经顺利进驻空间站,开始为期 6 个月的“太空差旅”生活。北京时间 2022 年 4 月 16 日 9 时 56 分,在太空遨游半年的神舟十三号飞船在东风着陆场平安降落,太空“出差”的 3 名航天员翟志刚、王亚平、叶光富安全顺利出舱,重回地球的怀抱。
国家的航天技术的突飞猛进也让岛上码农很自豪,今天看 Flutter 的动画知识,看到了 AnimatedPositioned
这个组件,可以用于控制组件的相对位置移动。结合当时神舟十三号的发射,灵机一动,正好可以使用AnimatedPositioned
这个组件实现火箭发射动画。话不多说,先上效果!
效果说明
这里其实是两张图片叠加,一张是背景地球星空的背景图,一张是火箭。火箭在发射过程中有两个变化:
高度越来越高,其实就是相对图片背景图底部的位置越来越大就可以实现;
尺寸越来越小,这个可以控制整个组件的尺寸实现。
然后是动画取消的选择,火箭的速度是越来越快,试了几个 Flutter 自带的曲线,发现 easeInCubic
这个效果挺不错的,开始慢,后面越来越快,和火箭发射的过程是类似的。
AnimatedPositioned
介绍
AnimatedPositioned
组件的使用方式其实和 AnimatedContainer 类似。只是AnimatedPositioned
是 Positioned
组件的替代。构造方法定义如下:
前面的参数和 Positioned
一样,后面是动画控制参数,这些参数的定义和 AnimatedContainer
的是一样的:
curve
:动画效果曲线;duration
:动画时长;onEnd
:动画结束后回调。
我们可以改变 left
,top
,width
等参数来实现动画过渡的效果。比如我们的火箭发射,就是修改 bottom
(飞行高度控制)和 width
(尺寸大小控制)来实现的。
火箭发射动画实现
有了上面的两个分析,火箭发射动画就简单了!完整代码如下:
其中一开始设置 bottom
为负值,是为了隐藏火箭的焰火,这样会更有感觉一些。然后就是在点击发射按钮的时候,通过 setState
更改底部距离和火箭尺寸就可以搞定了。
总结
通过神舟十三飞船发射,来一个火箭动画是不是挺有趣?其实这篇主要的知识点还是介绍 AnimatedPositioned
的应用。通过 AnimatedPositioned
可以实现很多层叠组件的相对移动变化效果,比如进度条的滑块,滑动开关等。各位 Flutter 玩家也可以利用 AnimatedPositioned
这个组件自己来玩一下好玩的动画效果哦!
版权声明: 本文为 InfoQ 作者【岛上码农】的原创文章。
原文链接:【http://xie.infoq.cn/article/7101b65b03af0d5030f3fe448】。文章转载请联系作者。
评论