想要在wepy中实现一根线条的上下滑动,想法如下图:
最开始我的想法是定义一个动画,每次给他不同动作,但是动画只执行了一次(后续代码部分在修改后里展示)如(知道原因的前辈在下方留言告知哦,感激~):
var mark=true;
this.setintervalInstance=setInterval(
function() {
// animation.translateY(-60).step()
if (mark) {
this.animation.translateY(400).step();
} else {
this.animation.translateY(-400).step();
}
mark=!=mark
this.animationData = this.animation.export();
}.bind(this),
2000
);
然后总是只执行一次,最后选择就在一个动画里只做一个动作,只是这个动作一直在循环,也能达到一样的效果
修改后:
template中
<view class="scan-animation"animation="{{animationData}}"></view>
script中
wepy.page({
data: {
animationData: {},
setintervalInstance: null,
},
onShow() {
this.donghua();
},
onUnload(){
clearInterval(this.setintervalInstance)//清除定时器
},
methods: {
donghua() {
var animation = wx.createAnimation({
duration: 2000
});
this.animation = animation;
this.animationData = animation.export();
var n = 0;
//连续动画需要添加定时器,所传参数每次变化就行
this.setintervalInstance=setInterval(
function() {
// animation.translateY(-60).step()
if (n < 400) {
n = n + 400;
} else {
n = n - 400;
}
console.log(n);
this.animation.translateY(n).step();
this.animationData = this.animation.export();
}.bind(this),
2000
);
}
});
动画成功的上下滑动了。
PS: this.animation这个animation数据我没放在一开始的data中,使用this.animation就是创建一个animation到data里面