<!--pages/API/Animation/index.wxml-->
<view class="box">

  <view class='title'>动画演示</view>
  <view class="animation-area">
    <view class="animation-element" animation="{{animation}}"></view>
  </view>

  <view class='btn-row'>
    <button bindtap="rotate" style='width:24%;'>旋转</button>
    <button bindtap="scale" style='width:24%;'>缩放</button>
    <button bindtap="translate" style='width:24%;'>移动</button>
    <button bindtap="skew" style='width:24%;'>倾斜</button>
  </view>

  <view class='btn-row'>
    <button bindtap="rotateAndScale" style='width:48%;'>旋转并缩放</button>
    <button bindtap="rotateThenScale" style='width:48%;'>旋转后缩放</button>
  </view>

  <view class='btn-row'>
    <button bindtap="all" style='width:48%;'>同时展示全部</button>
    <button bindtap="allInQueue" style='width:48%;'>顺序展示全部</button>
  </view>

  <view>
    <button bindtap="reset" style='width:96%;'>还原</button>
  </view>

</view>

 

/* pages/API/Animation/index.wxss */

.animation-area {
  /* 动画区样式 */
  display: flex;
  width: 100%;
  padding-top: 150rpx;
  padding-bottom: 150rpx;
  justify-content: center;
  overflow: hidden;/*超出部分隐藏*/
  background-color: #fff;
  border: 1px solid sandybrown;
  margin-bottom: 10px;
}

.animation-element {
  /* 动画元素样式 */
  width: 200rpx;
  height: 200rpx;
  background-color: #1aad19;
}

.btn-row {
  /* 按钮布局 */
  display: flex;
  flex-direction: row;
  justify-content: space-around;  /*各个元素之间间隔相同*/
}

button {
  /* 按钮样式 */
  margin: 5px;
}

 

// index.js
Page({
  onReady: function() {
    this.animation = wx.createAnimation() //创建动画实例
  },
  
  rotate: function() { //旋转动画
    this.animation.rotate(Math.random() * 720 - 360).step()//参数:旋转角度-360到360之间的一个数,rotate设置动画 step执行动画
    this.setData({
      animation: this.animation.export()//输出动画,渲染到wxml中
    })
  },

  scale: function() { //缩放动画
    this.animation.scale(Math.random() * 2).step()//参数:缩放比例0-2倍之间,一个参数水平和垂直缩放的比例一样
    this.setData({
      animation: this.animation.export()
    })
  },

  translate: function() { //平移动画
    this.animation.translate(Math.random() * 100 - 50, Math.random() * 100 - 50).step()//参数:两个,沿水平和垂直方向移动-50到50之间,右下为正,左上为负
    this.setData({
      animation: this.animation.export()
    })
  },

  skew: function() { //偏斜动画
    this.animation.skew(Math.random() * 90, Math.random() * 90).step()//沿x方向0-90度方向偏斜,沿y方向也是
    this.setData({
      animation: this.animation.export()
    })
  },

  rotateAndScale: function() { //旋转并缩放
    this.animation.rotate(Math.random() * 720 - 360)
      .scale(Math.random() * 2)
      .step()
    this.setData({
      animation: this.animation.export()
    })
  },

  rotateThenScale: function() { //旋转后缩放
    this.animation.rotate(Math.random() * 720 - 360).step()
      .scale(Math.random() * 2).step()
    this.setData({
      animation: this.animation.export()
    })
  },

  all: function() { //同时展示全部动画
    this.animation.rotate(Math.random() * 720 - 360)
      .scale(Math.random() * 2)
      .translate(Math.random() * 100 - 50, Math.random() * 100 - 50)
      .skew(Math.random() * 90, Math.random() * 90)
      .step()
    this.setData({
      animation: this.animation.export()
    })
  },

  allInQueue: function() { //顺序展示全部动画
    this.animation.rotate(Math.random() * 720 - 360).step()
      .scale(Math.random() * 2).step()
      .translate(Math.random() * 100 - 50, Math.random() * 100 - 50).step()
      .skew(Math.random() * 90, Math.random() * 90).step()
    this.setData({
      animation: this.animation.export()
    })
  },

  reset: function() { //还原动画
    this.animation.rotate(0, 0)
      .scale(1)
      .translate(0, 0)
      .skew(0, 0)
      .step({
        duration: 0
      })
    this.setData({
      animation: this.animation.export()
    })
  }
})

onReady生命周期函数

 

创建Animation动画对象

函数wx.createAnimation(Object object)用于创建一个动画实例 。其参数属性如下:

 transformOrigin 默认值:50% 50% 0 表示沿着图形的中心进行旋转

 

 timingFunction 的合法值

 Animation方法