//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>
jsdata(){ 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);//开始转动 } },}