抽奖大转盘 js
/*
* _this 旋转对象
* t 转过每一格的时间
* n 转动的圈数
* prizeNum 抽中的奖品编号 由0开始
* wheelNum 转盘的格数
* dataExecution 执行完之后要执行的函数
* */
let isGo = true;
function turnTable(_this,t,n,prizeNum,wheelNum,dataExecution) {
if(isGo) {
isGo = false;
let deg = _this.css('transform');
deg = deg.replace('rotate(', '');
deg = deg.replace('deg)', '');
if (deg == 'none') {
deg = 0;
}
//当前奖品编号
let numbering = (deg - Math.floor(deg / 360) * 360) / (360/wheelNum);
console.log(numbering);
if (numbering > n) {
n1 = prizeNum + wheelNum - numbering;
} else {
n1 = prizeNum - numbering;
}
deg = Number(deg) + 360 * n + Number(n1 * (360/wheelNum));
let time = t * n * wheelNum + n1 * t;
_this.css({
'transition': 'all ' + time + 's ease',
'-moz-transitionall': 'all ' + time + 's ease',
'-webkit-transition': 'all ' + time + 's ease',
'-o-transition': 'all ' + time + 's ease'
});
_this.css({
'transform': 'rotate(' + deg + 'deg)',
'-moz-transform': 'rotate(' + deg + 'deg)',
'-webkit-transform': 'rotate(' + deg + 'deg)',
'-o-transform': 'rotate(' + deg + 'deg)'
});
setTimeout(function () {
isGo = true;
dataExecution();
},time * 1000)
}
}
引用
turnTable(_this,t,n,prizeNum,wheelNum,function(){
//成功之后的执行函数
})
如有问题,请留言,谢谢