2018-5-15 seo达人
如果您想订阅本博客内容,每天自动发到您的邮箱中, 请点这里
首先在wxml中定义image
注意其中的animation属性,image就由它来实现动画。
而{{animation}}我们在js的data中定义
data: {
animation: \'\'
},
相关代码
var _animation;
var _animationIndex
const _ANIMATION_TIME = 500;
pages {
...
onShow: function () {
_animation =wx.createAnimation({
duration:_ANIMATION_TIME,
timingFunction: \'linear\',//linear,ease,ease-in,ease-in-out,ease-out,step-start,step-end
delay: 0,
transformOrigin:\'50% 50% 0\'
})
},
/**
* 实现image旋转动画,每次旋转 120*n度
*/
rotateAni: function (n){
_animation.rotate(120* (n)).step()
this.setData({
animation:_animation.export()
})
},
/**
* 开始旋转
*/
startAnimationInterval:function () {
var that = this;
that.rotateAni(++_loadImagePathIndex); // 进行一次旋转
_animationIntervalId =setInterval(function () {
that.rotateAni(++_loadImagePathIndex);
}, _ANIMATION_TIME); // 没间隔_ANIMATION_TIME进行一次旋转
},
/**
* 停止旋转
*/
stopAnimationInterval:function () {
if (_animationIntervalId> 0) {
clearInterval(_animationIntervalId);
_animationIntervalId= 0;
}
},
}
微信自带的Animation可以实现一次动画,然后可以通过setInterval来达到不断旋转的目的,在使用时,控制startAnimationInterval和stopAnimationInterval即可。
微信小程序视频教程,尽在即速学院。
在使用animation时,会发现有时候出现旋转速度很快或者反向旋转再正向旋转的清空,这都是由于rotate的值设置有问题。
1、rotate的值应该是上一次结束时的值,
2、如果设置了全局变量,记得在oncreate时初始化,不然第二次打开同一页面会有问题。
注意事项:
这里为什么不直接给_animation.rotate(120 * (n)).step()设置一个足够大的值,原因有两点:
1、我们需要便利的控制开始和停止,
2、animation在小程序进入后台后,会持续运行,占用手机内存和cpu,而小程序依赖于微信,在iphone上会导致微信被终止运行