1. animation动画介绍
在微信小程序开发中,我们经常会用到动画,而animation就是我们常用的一种动画实现方式。它支持CSS3中的animation语法,可以让开发者通过JS控制动画的开始、暂停、继续、结束等操作。具体的实现可分为以下几个步骤:
1.1 创建animation实例
在代码中创建一个animation实例,并设置需要动画的属性和初始值与结束值,如下所示:
let animation = wx.createAnimation({
duration: 1000, //动画持续时间
timingFunction: 'linear', //动画的效果(timingFunction支持 linear ease ease-in ease-in-out ease-out step-start step-end)
})
animation.translateX(-100).step() //设置translateX属性初始值和结束值,并通过step()方法表示一组动画完成
1.2 将animation实例绑定到一个组件上
将创建好的animation实例通过selectComponent方法选取组件,并调用组件的方法exportAnimation()将animation实例导出,以便在JS代码中操作该动画。如下所示:
let animation = wx.createAnimation({
duration: 1000, //动画持续时间
timingFunction: 'linear', //动画的效果(timingFunction支持 linear ease ease-in ease-in-out ease-out step-start step-end)
})
animation.translateX(-100).step() //设置translateX属性初始值和结束值,并通过step()方法表示一组动画完成
this.setData({
animationData: animation.export() //将animation实例导出
})
1.3 在JS代码中操作animation实例
通过animation实例提供的方法,我们可以控制动画的开始、暂停、继续、结束等操作。如下所示:
let animation = wx.createAnimation({
duration: 1000, //动画持续时间
timingFunction: 'linear', //动画的效果(timingFunction支持 linear ease ease-in ease-in-out ease-out step-start step-end)
})
animation.translateX(-100).step() //设置translateX属性初始值和结束值,并通过step()方法表示一组动画完成
this.setData({
animationData: animation.export() //将animation实例导出
})
// 开始动画
this.data.animationData.translateX(-200).step()
this.setData({
animationData: this.data.animationData.export()
})
// 暂停动画
this.data.animationData.exportAnimation.pause()
// 继续动画
this.data.animationData.exportAnimation.resume()
// 结束动画
this.data.animationData.exportAnimation.cancel()
2. animation动画实现
接下来,我们通过一个例子演示如何使用animation动画实现小程序中的动画效果。本例子实现的效果是:点击按钮时,实现一个类似抖音点赞的心形动画效果。
2.1 创建一个页面
在微信小程序中,我们先创建一个页面,如下所示:
<view class='container'>
<view class='like-btn' bindtap='likeBtnClick' animation='{{likeAnimation}}'></view>
</view>
在页面中,我们创建一个容器和一个绑定点击事件的按钮。当按钮被点击时,通过JS代码触发动画效果。
2.2 实现动画效果
在JS代码中,我们创建一个animation实例,设置需要动画的属性和初始值与结束值,并将animation实例绑定到按钮组件上。当点击按钮时,通过JS代码触发动画效果。
Page({
data: {
likeAnimation: {} //定义likeAnimation对象的初始值为空
},
// 点击按钮时触发
likeBtnClick() {
// 创建一个animation实例
let likeAnimation = wx.createAnimation({
duration: 1000,
timingFunction: 'ease'
})
// 设置动画初始值和结束值,实现心形变化效果
likeAnimation.scale(1.5).rotate(45).opacity(0.6).step()
likeAnimation.scale(1).rotate(0).opacity(1).step()
// 将animation实例绑定到按钮组件上
this.setData({
likeAnimation: likeAnimation.export()
})
}
})
2.3 设置CSS样式
最后,我们在CSS样式中设置按钮组件的大小和背景色,使其具有点击效果。如下所示:
.container {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-color: #F3F3F3;
}
.like-btn {
width: 100rpx;
height: 100rpx;
background-color: #FF4081;
border-radius: 50%;
box-shadow: 0 4rpx 10rpx rgba(255, 64, 129, 0.4);
animation-duration: 1s; /* 动画持续时间 */
animation-timing-function: ease; /* 动画的效果 */
}
.like-btn:active {
box-shadow: 0 0 0 rgba(255, 64, 129, 1);
}
至此,我们就通过animation动画实现了小程序中的动画效果。点击按钮,就会实现一个类似抖音点赞的心形动画效果。