1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- function LotteryDraw(obj, callback) {
- this.timer = null; //计时器
- this.startIndex = obj.startIndex-1 || 0; //从第几个位置开始抽奖 [默认为零]
- this.count = 0; //计数,跑的圈数
- this.winingIndex = obj.winingIndex || 0;//获奖的位置
- this.totalCount = obj.totalCount || 6;//抽奖跑的圈数
- this.speed = obj.speed || 100;
- this.domData=obj.domData;
- this.rollFn();
- this.callback = callback;
- }
- LotteryDraw.prototype = {
- rollFn: function() {
- var that = this;
- // console.log(`获奖位置:${this.winingIndex}`)
- // 活动index值增加,即移动到下一个格子
- this.startIndex++;
-
- //startIndex是最后一个时一圈走完,重新开始
- if (this.startIndex >= this.domData.length - 1) {
- this.startIndex = 0;
- this.count++;
- }
-
- // 当跑的圈数等于设置的圈数,且活动的index值是奖品的位置时停止
- if (this.count >= this.totalCount && this.startIndex === this.winingIndex) {
- if (typeof this.callback === 'function') {
- setTimeout(function() {
- that.callback(that.startIndex,that.count); //执行回调函数,抽奖完成的相关操作
- }, 400);
- }
- clearInterval(this.timer);
- }else { //重新开始一圈
- if (this.count >= this.totalCount - 1) {
- this.speed += 30;
- }
- this.timer = setTimeout(function() {
- that.callback(that.startIndex,that.count);
- that.rollFn();
- }, this.speed);
- }
- }
- }
- module.exports = LotteryDraw;
|