//html
<div class="all clearfix">
<div class="title"></div>
<div class="information"></div>
<div class="drawBox">
<ul>
<li v-for="(item, index) in noticeList" :key="index">
<img :src="item.pri" alt="" />
</li>
</ul>
<div class="buttom"></div>
</div>
//复制一遍作为蒙板
<div class="drawBox">
<ul>
<li
v-for="(item, i) in noticeList"
:class="i == index ? 'on' : ''"
:key="i"
></li>
</ul>
<div class="buttom" @click="turnToFn"></div>
</div>
</div>
js
data(){
return{
index: 0, // 当前转动到哪个位置,起点位置
count: 8, // 总共有多少个位置
timer: 0, // 每次转动定时器
speed: 200, // 初始转动速度
times: 0, // 转动次数
cycle: 50, // 转动基本次数:即至少需要转动多少次再进入抽奖环节
prize: -1, // 中奖位置
}
}
methods:{
/**
* 大转盘
* * */
turnToFn: function () {
console.log("asdas");
this.speed = 200; //每次抽奖速度初始化为200
this.prize = 3; //中奖位置赋值,跑马灯最终停留位置,这里实际位置需要-1
this.startRoll(); //执行抽奖
},
startRoll() {
this.times += 1; // 转动次数
this.oneRoll(); // 转动过程调用的每一次转动方法,这里是第一次调用初始化
this.usePrize();
},
// 每一次转动
oneRoll() {
let index = this.index; // 当前转动到哪个位置
const count = 8; // 总共有多少个位置
index += 1;
if (index > count - 1) {
index = 0;
}
this.index = index;
},
usePrize(){
// 如果当前转动次数达到要求 && 目前转到的位置是中奖位置
if (this.times > this.cycle +10 && this.prize === this.index) {
clearTimeout(this.timer); // 清除转动定时器
clearTimeout(this.lamp); // 清除灯光定时器
this.lampShow = false; // 白色灯隐藏
this.times = 0; // 转动跑格子次数初始化为0,可以开始下次抽奖
} else {
if(this.times < this.cycle -20){
this.speed -= 4; // 加快转动速度
}else{
this.speed += 10; // 抽奖即将结束,放慢转动速度
}
this.timer = setTimeout(this.startRoll, this.speed);//开始转动
}
},
}