微信小程序开发之animation循环动画实现让云朵飘的效果

1.前言

微信小程序的开发已经逐渐成为了一种趋势,对于小程序的开发,我们需要掌握的技能也是很多的,其中动画效果的实现是小程序中非常重要的一个方面。而在小程序的动画效果中,循环动画更是一种非常常见的类型,下面我们将使用animation来编写一个循环动画,通过实现让云朵飘的效果,来帮助大家更好地理解。

2.效果预览

在正式开始编写代码之前,我们可以先来看一下最终的效果:让云朵在大海上飘荡

3.动画效果实现

3.1 动画基础

在小程序开发中,要实现动画效果,我们需要使用到animation动画,在小程序的wx.createAnimation()中提供了很多被支持的方法,我们可以使用 animation.xxx() 来控制动画的执行,其中,setTiming() 是 animation 实例中最常用的一个方法,用于指定一些配置项,如 duration(动画执行的时长,默认值 400ms)、timingFunction(定义动画的效果,默认值 "linear")、delay(动画延迟执行的时间,默认值 0)等配置。示例代码如下:

const animation = wx.createAnimation({

duration: 1000, //1s后停止

timingFunction: 'ease', //缓动函数

delay: 0 //动画延迟时间为0

})

上述代码我们定义了一个动画,时长为1s,延迟时间为0,缓动效果为 ease。

3.2 循环动画实现

在循环动画实现过程中,我们需要借助setInterval方法来实现动画的循环效果,setInterval方法是在一定时间间隔后,反复执行一次指定的函数,直到取消该函数为止。

const timer=setInterval(function(){

// 在这里执行动画操作

},2000)

在循环动画实现的过程中,我们需要注意以下几个点:

每次循环时都要重新创建一个 animation 实例

每次设置完动画效果之后,需要调用动画的 export 方法,才能更改视图的属性

回调函数中需要执行要循环的操作,比如上下移动等等

下面,我们就以让云朵飘的效果来作为例子,来进一步地说明循环动画的实现。

3.3 云朵飘的效果实现

云朵飘荡的效果主要是通过定位实现的,需要每隔一段时间修改云朵的定位,使其形成一个类似于飘动的效果。

代码如下:

Page({

data: {

cloud: '', // 初始云朵定位

},

onLoad: function () {

let that= this

let time = setInterval(()=> {

//在每个时间段内,修改云朵定位

that.cloudFn()

}, 2000) //每隔2s执行一次

},

cloudFn:function(){

const animation = wx.createAnimation({ //每次循环都需要重新创建animation

duration: 2000, //时间为2s

timingFunction: 'ease',

delay: 0

})

animation.translateY(-300).step({duration:2000}) //往上移动300rpx

animation.translateY(0).step({duration:0}) //开始执行动画

this.setData({

cloud: animation.export() //使设置的动态属性值生效

})

}

})

上述代码中,我们定义了一个名为cloudFn的函数,用于每隔2s设置一次云朵的定位。在函数内部,我们首先使用wx.createAnimation()方法创建了一个animation的实例,用于控制云朵的运动。然后在每一次循环中,我们调用 animation 的 translateY() 方法,使云朵向上移动 300rpx,然后再调用 animation 的 step() 方法设置动画执行完成后的属性。最后通过调用setData()方法使得设置的动态属性值生效。

4.总结

至此,我们就实现了一个让云朵飘的效果。实现循环动画的关键在于创建animation实例和使用 setInterval()方法来不断地修改动画的定位。当然,在实际的开发中,涉及到的动画效果还有很多,希望大家能够在实际的开发中不断地探究,丰富自身动画效果的实现方式。