博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[微信小程序系列] 动画案例之圆点沿着圆圈运动
阅读量:6968 次
发布时间:2019-06-27

本文共 1662 字,大约阅读时间需要 5 分钟。

作者:滴滴公共前端团队 - Tawnia

滴滴作为第一批的小程序开发者,我们也大量地用到了动画,积累了一些经验,由于市面上的小程序动画案例很少,我们也分享一部分我们做过的案例:

首先用 wx.createAnimation(OBJECT) 创建一个动画实例,OBJECT 里的参数是设置动画 duration、timingFunction、delay、transformOrigin;然后通过 export 方法将动画实例输出并 setData 给组件 data{} 里的 animation 属性。

在开始说下面的小动画之前需要注意以下几点

  1. 小程序官方动画 API 文档的最下面的 bug&tip :
    bug: IOS/Android 6.3.30 通过step()分隔动画,只有第一步动画能生效
  2. 在小程序动画文档里的 wx.creatAnimation(OBJECT) 这个方法提供的参数没有类似 css3 animation-iteration-count 这样的参数。

接来就说说下面的小动画案例:

如上图我们要实现小圆点沿着圆圈轨迹运动的小动画。

WXML:

两个 view 标签,一个是路径圆圈,圆圈可以用背景图来做也可以用 border-radius 来实现;一个是圆点。

复制代码

WXSS:

基本设置定位,这里只放宽高。

.animation-box{    width: 176px;    height:176px;}.time-crl-path {    width: 176px;    height: 176px;    ......}.crl-dot {    width: 9px;    height:9px;    ......}复制代码

JS:

transformOrigin 这个参数所设置的是小圆点旋转时的原点,默认是元素中心,下面设置的就是路径圆圈的中心,具体参数需要根据路径圆圈不来算。

Page({  data: {        dotAnData: {}  },  onShow: function(){        var i = 0        var dotAnData =wx.createAnimation({            duration: 1000,            transformOrigin: '4px 91px'        })        dotAnFun =setInterval(function() {             dotAnData.rotate(6 * (++i)).step()             that.setData({                  dotAnData: dotAnData.export()             })        }.bind(that), 1000)   }})复制代码

从上面的代码可以看出是使用 setInterval() 解决了文章开头的两项注意事项。

那么为什么不执行 rotate(360) 或者 rotate(180)

这就要注意官方文档的 rotate(deg) 的 deg 的取值范围 -180 ~ 180,从原点顺时针旋转一个 deg。还有就是 rotate animation 在运动角度幅度较大的情况下轨迹会有偏离,就是说在正常设置的 transformOrigin 的情况下圆点运动轨迹会有偏离。

所以上面的小动画案例就是把它拆分,定义 deg 为 6 作基本增加量, ++i 累加,这样在正常的 transformOrigin 下整个动画就是由每个小动画 rotate(6) 组成的。

目前小程序动画对于动画效果还是有限制的,不过简单的动画效果是没问题的啦~


欢迎关注DDFE

GITHUB:
微信公众号:微信搜索公众号“DDFE”或扫描下面的二维码

转载地址:http://oyssl.baihongyu.com/

你可能感兴趣的文章
Sublime Text 3注册码
查看>>
网站的宣传推广极为重要
查看>>
给Metro风格RSS阅读器加个搜索
查看>>
DNS显性+隐性URL转发原理
查看>>
Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结
查看>>
日常数据文件自动入hive数据库
查看>>
AMD CEO罗瑞德称将调整战略 应对市场变化
查看>>
python符号计算
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
L4 磁盘管理与实例演示
查看>>
Jfinal engin 集成shiro标签支持
查看>>
58同城的面试经历
查看>>
Linux下,Redis(四)Redis数据持久化
查看>>
Python编程快速上手让繁琐工作自动化 第十二章实践项目12.13.3 电子表格单元格翻转程序...
查看>>
关于nginx优先级问题
查看>>
Jpchina博客
查看>>
使用手机作单反相机的遥控器
查看>>
finally的用法,拦截器是Struts2的核心,异常处理
查看>>
解决linux系统CentOS下调整home和根分区大小
查看>>