微信小程序> 微信小程序wx.createAnimation动画实现

微信小程序wx.createAnimation动画实现

浏览量:624 时间: 来源:chibimarukochan

一、效果

说明:类似携程切换往返地址

二、实现

1).wxml:

<view class="animation">  <view class="dis-flex">    <view class='flex3' animation="{{lAnimate}}">{{start}}</view>    <view class='flex1' bindtap="trigger">      <image src="../../images/change.png" class="flexImg" animation="{{imgAnimation}}"></image>    </view>     <view class='flex3' animation="{{rAnimate}}">{{end}}</view>  </view></view>

2).wxss:

.animation{  margin-top: 20rpx;padding: 10rpx 30rpx;background-color: #FFFFFF;}.dis-flex{  display: flex;}.flex1{  flex: 1;text-align: center;}.flex3{  flex: 3;text-align: center;}.flexImg{  width:20px;height:20px;}

3).js:*******最重要的部分!**********

注意:图片记得要复位,不然再次点击的时候不能发生旋转。

 data: {    lAnimate: '',    rAnimate: '',    imgAnimation:'',    start: '北京',    end: '深圳'  }, trigger() {    let that = this;    let option = {      duration: 100, // 动画执行时间      timingFunction: 'ease-in' // 动画执行效果    };    let lanimation = wx.createAnimation(option); // 创建动画    let ranimation = wx.createAnimation(option);    let imgAnimation = wx.createAnimation({      duration: 200,      timingFunction: 'linear'    });    // 起点    lanimation.translateX(100);    lanimation.opacity(0.1).step();    // 终点    ranimation.translateX(-100);    ranimation.opacity(0.1).step();    //中间图标    imgAnimation.rotate(180).step();    that.setData({      lAnimate: lanimation.export(),// 开始执行动画      rAnimate: ranimation.export(), // 开始执行动画      imgAnimation: imgAnimation.export()    })    setTimeout(() => {      // 起点      lanimation.translateX(0);      lanimation.opacity(1).step();      // 终点      ranimation.translateX(0);      ranimation.opacity(1).step();      //图片 在100ms后执行一个在0s时间完成新的动画让它复位至0度      imgAnimation.rotate(0).step({ duration: 0, transformOrigin: "50%,50%", timingFunction: 'linear' })      that.setData({        imgAnimation: imgAnimation.export(),        lAnimate: lanimation.export(),// 开始执行动画        rAnimate: ranimation.export(),// 开始执行动画        end: that.data.start,        start: that.data.end      })    }, 100);  }

三、API说明

wx.createAnimation(Object object)

创建一个动画实例 animation。调用实例的方法来描述动画。最后通过动画实例的 export 方法导出动画数据传递给组件的 animation 属性。

Object object

属性类型默认值必填说明
durationnumber400动画持续时间,单位 ms
timingFunctionstring'linear'动画的效果
delaynumber0动画延迟时间,单位 ms
transformOriginstring'50% 50% 0'

timingFunction 的合法值:

说明最低版本
'linear'动画从头到尾的速度是相同的 
'ease'动画以低速开始,然后加快,在结束前变慢 
'ease-in'动画以低速开始 
'ease-in-out'动画以低速开始和结束 
'ease-out'动画以低速结束 
'step-start'动画第一帧就跳至结束状态直到结束 
'step-end'动画一直保持开始状态,最后一帧跳到结束状态

Animation方法:  

方法说明
export ()导出动画队列。export 方法每次调用后会清掉之前的动画操作。
opacity()设置透明度。透明度,范围 0-1
rotate(number angle)从原点顺时针旋转一个角度。旋转的角度范围 [-180, 180]
scale(number sx, number sy)当仅有 sx 参数时,表示在 X 轴、Y 轴同时缩放sx倍数;在 Y 轴缩放 sy 倍数
skew(number ax, number ay)对 X、Y 轴坐标进行倾斜
step(Object object)
 
表示一组动画完成。可以在一组动画中调用任意多个动画方法,一组动画中的所有动画会同时开始,一组动画完成后才会进行下一组动画。

translate(number tx, number ty)

平移变换
小程序

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎