这几天在看代码时遇到了一些问题:关于微信小程序的animation自定义动画本身没有系统的学习过小程序
作动画须要咱们将一个复杂的动做过程,拆解为一步一步的小节过程微信小程序
微信中已经为咱们写好了端口咱们只须要实例化一个动画实例(实例代码以下)微信
先了解基础部分:学习
在看代码以前要先有个下面的基础了解动画
1)wx.createAnimation(object) 微信小程序实例化一个动画效果ui
2)export( ) 这个方法是导出动画数据(传递给animation属性)this
3)step( ) 来表示一组动画完成spa
微信官网主要属性设置:code
这里主要树下timingFunction和transformOriginorm
timingFunction 设置动画效果
transformOrigin 设置动画的基点 默认%50 %50 0
动画组及动画方法:
样式:
旋转:
缩放:
偏移:
倾斜:
矩形变形:
官方是这样介绍的:
1.建立一个动画实例animation。调用实例的方法来描述动画。最后经过动画实例的export方法导出动画数据传递给组件的animation属性。
这一步是基础:
1)建立一个animation实例
2) 调用实例化的方法描述动画
3)最后经过动画实例的export( )方法导出动画数据传递给{{animation}}
2.调用动画操做方法后要调用 step( ) 来表示一组动画完成,能够在一组动画中调用任意多个动画方法,一组动画中的全部动画会同时开始,一组动画完成后才会进行下一组动画。step 能够传入一个跟 wx.createAnimation() 同样的配置参数用于指定当前组动画的属性
下面是代码实例:
HTML
<view class="container"> <view animation="{{animation}}" class="view">我在作动画</view> </view> <button type="primary" bindtap="rotate">旋转</button>
JS
Page({ data:{ text:"Page animation", animation: '' }, onLoad:function(options){ // 页面初始化 options为页面跳转所带来的参数 }, onReady:function(){ // 页面渲染完成 //实例化一个动画 this.animation = wx.createAnimation({ // 动画持续时间,单位ms,默认值 400 duration: 1000, /** * http://cubic-bezier.com/#0,0,.58,1 * linear 动画一直较为均匀 * ease 从匀速到加速在到匀速 * ease-in 缓慢到匀速 * ease-in-out 从缓慢到匀速再到缓慢 * * http://www.tuicool.com/articles/neqMVr * step-start 动画一开始就跳到 100% 直到动画持续时间结束 一闪而过 * step-end 保持 0% 的样式直到动画持续时间结束 一闪而过 */ timingFunction: 'linear', // 延迟多长时间开始 delay: 100, /** * 以什么为基点作动画 效果本身演示 * left,center right是水平方向取值,对应的百分值为left=0%;center=50%;right=100% * top center bottom是垂直方向的取值,其中top=0%;center=50%;bottom=100% */ transformOrigin: 'left top 0', success: function(res) { console.log(res) } }) }, /** * 旋转 */ rotate: function() { //顺时针旋转10度 // this.animation.rotate(150).step() this.setData({ //输出动画 animation: this.animation.export() }) } })
下面是多个动画效果连续执行的效果(有文字描述动画效果)
/** * 旋转 */ rotate: function() { //两个动画组 必定要以step()结尾 /** * 动画顺序 顺时针旋转150度>x,y 放大二倍>x,y平移10px>x,y顺时针倾斜>改变样式和设置宽度宽度 */ this.animation.rotate(150).step().scale(2).step().translate(10).step().skew(10).step().opacity(0.5).width(10).step({ducation: 8000}) this.setData({ //输出动画 animation: this.animation.export() }) }