微信小程序 动画

本文介绍了微信小程序中如何创建和使用动画,包括wx.createAnimation接口的使用、动画实例的方法如旋转、缩放等,并强调了动画队列的使用,以确保一组动画按顺序执行。

一.先看一个例子及代码:


<view  class="view_a">
<image animation="{{animation}}" class="a_img" src="https://img-blog.csdn.net/20170614190537974?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVUZPMDAwMDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center"></image>
</view>
<view class="sure" bindtap="dh">发射</view>

.sure{
  width: 10%;
  height:80rpx;
  margin-top: 0rpx;
  margin-left: 45%;
  background: #00ddff;
  border-radius: 50rpx;
  text-align: center;
  line-height: 80rpx;
  color: #fff;
}
.view_a{
  width: 100%;
  height: 900rpx;
  display: flex;
  background-image: url('https://img-blog.csdn.net/20170615103714645?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVUZPMDAwMDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center');
}
.a_img{
  margin-top: 600rpx;
  margin-left:100rpx;
  width: 80rpx;
  height:80rpx;
}

data: {
    animation : ''
 },
 dh: function(){
    var that = this;
     //实例化
     that.animation = wx.createAnimation({
       duration: 200,
       timingFunction: "ease",
       delay: 1000,
       transformOrigin: 'center',
       success: function (res) {
         console.log(res)
       }
     })
     that.animation
     .rotate(180).step()   //原点顺时针旋转180度  也可以不加.step() 不加的话便是动画同时执行
     .rotate(-180).step()  //原点逆时针旋转180度
     .rotate(0).step()     //回到初始
     .scale(1.3).step()    // x,y轴同时缩放1.3倍
     .translateX(90).step()//x轴偏移90px
     .translateY(20).step()//y轴偏移20px
     .skew(30).step()      //x轴沿顺时针偏移30度
     .skew(-30).step()     //x轴沿逆时针偏移30度
     .skew(0).step()       //返回不偏移时
     .rotateY(180).step()  //Y轴旋转180度
     .translateY(-222).step()//在y轴偏移-222px
     .matrix3d(0.8, 0, 28).step();
     that.setData({
       animation: that.animation.export()
     })},

二. 小程序动画 Animation API


wx.createAnimation(OBJECT)

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

注意: export 方法每次调用后会清掉之前的动画操作 

OBJECT参数说明:

参数类型必填默认值说明
durationInteger400动画持续时间,单位ms
timingFunctionString"linear"定义动画的效果
delayInteger0动画延迟时间,单位 ms
transformOriginString"50% 50% 0"设置transform-origin

timingFunction 有效值:

说明
linear动画从头到尾的速度是相同的
ease动画以低速开始,然后加快,在结束前变慢
ease-in动画以低速开始
ease-in-out动画以低速开始和结束
ease-out动画以低速结束
step-start动画第一帧就跳至结束状态直到结束
step-end动画一直保持开始状态,最后一帧跳到结束状态
var animation = wx.createAnimation({
  transformOrigin: "50% 50%",
  duration: 1000,
  timingFunction: "ease",
  delay: 0
})

animation

动画实例可以调用以下方法来描述动画,调用结束后会返回自身,支持链式调用的写法。

animation 对象的方法列表:

样式:

方法参数说明
opacityvalue透明度,参数范围 0~1
backgroundColorcolor颜色值
widthlength长度值,如果传入 Number 则默认使用 px,可传入其他自定义单位的长度值
heightlength长度值,如果传入 Number 则默认使用 px,可传入其他自定义单位的长度值
toplength长度值,如果传入 Number 则默认使用 px,可传入其他自定义单位的长度值
leftlength长度值,如果传入 Number 则默认使用 px,可传入其他自定义单位的长度值
bottomlength长度值,如果传入 Number 则默认使用 px,可传入其他自定义单位的长度值
rightlength长度值,如果传入 Number 则默认使用 px,可传入其他自定义单位的长度值

旋转:

方法参数说明
rotatedegdeg的范围-180~180,从原点顺时针旋转一个deg角度
rotateXdegdeg的范围-180~180,在X轴旋转一个deg角度
rotateYdegdeg的范围-180~180,在Y轴旋转一个deg角度
rotateZdegdeg的范围-180~180,在Z轴旋转一个deg角度
rotate3d(x,y,z,deg)transform-function rotate3d

缩放:

方法参数说明
scalesx,[sy]一个参数时,表示在X轴、Y轴同时缩放sx倍数;两个参数时表示在X轴缩放sx倍数,在Y轴缩放sy倍数
scaleXsx在X轴缩放sx倍数
scaleYsy在Y轴缩放sy倍数
scaleZsz在Z轴缩放sy倍数
scale3d(sx,sy,sz)在X轴缩放sx倍数,在Y轴缩放sy倍数,在Z轴缩放sz倍数

偏移:

方法参数说明
translatetx,[ty]一个参数时,表示在X轴偏移tx,单位px;两个参数时,表示在X轴偏移tx,在Y轴偏移ty,单位px。
translateXtx在X轴偏移tx,单位px
translateYty在Y轴偏移tx,单位px
translateZtz在Z轴偏移tx,单位px
translate3d(tx,ty,tz)在X轴偏移tx,在Y轴偏移ty,在Z轴偏移tz,单位px

倾斜:

方法参数说明
skewax,[ay]参数范围-180~180;一个参数时,Y轴坐标不变,X轴坐标延顺时针倾斜ax度;两个参数时,分别在X轴倾斜ax度,在Y轴倾斜ay度
skewXax参数范围-180~180;Y轴坐标不变,X轴坐标延顺时针倾斜ax度
skewYay参数范围-180~180;X轴坐标不变,Y轴坐标延顺时针倾斜ay度

矩阵变形:

方法参数说明
matrix(a,b,c,d,tx,ty)transform-function matrix
matrix3d transform-function matrix3d

动画队列

调用动画操作方法后要调用 step() 来表示一组动画完成,可以在一组动画中调用任意多个动画方法,一组动画中的所有动画会同时开始,一组动画完成后才会进行下一组动画。step 可以传入一个跟 wx.createAnimation() 一样的配置参数用于指定当前组动画的配置。

参考文章: 动画APIhttps://mp.weixin.qq.com/debug/wxadoc/dev/api/api-animation.html



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值