JavaScript
window.requestAnimFrame = (function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
function(callback){window.setTimeout(callback, 1000 / 60);};
})();
function polarToCartesian(centerX, centerY, radius, angleInDegrees) {
var angleInRadians = (angleInDegrees-90) * Math.PI / 180.0;
return {
x: centerX + (radius * Math.cos(angleInRadians)),
y: centerY + (radius * Math.sin(angleInRadians))
};
}
function arcPath(x, y, radius, endradius, startAngle, endAngle) {
var start = polarToCartesian(x, y, radius, endAngle);
var end = polarToCartesian(x, y, radius, startAngle);
var start2 = polarToCartesian(x, y, endradius, endAngle);
var end2 = polarToCartesian(x, y, endradius, startAngle);
var largeArcFlag = endAngle - startAngle <= 180 ? "0" : "1";
var d = [
"M", start.x, start.y,
"A", radius, radius, 0, largeArcFlag, 0, end.x, end.y,
"L", end2.x, end2.y,
"A", endradius, endradius, 0, largeArcFlag, 1, start2.x, start2.y,
"Z"
].join(" ");
return d;
}
var spin = {
slots: [
{value:'A', value1:'lazada', color: '#7CB247'},
{value:'B', value1:'zalora', color: '#CBDB20'},
{value:'C', value1:'shopee', color: '#7CB247'},
{value:'D', value1:'groupon', color: '#823572'},
{value:'E', value1:'carousell', color: '#7CB247'},
{value:'F', value1:'mudah', color: '#CBDB20'},
],
speed: 0,
spinSpeed: 10,
degree: 0,
obj: null,
stop: false,
min_duration: 3000,
max_duration: 8000,
rand_speed: 0,
};
var spin_anim = function(){
if ( spin.stop ) { return true; }
spin.degree = filter_degree(spin.degree + spin.speed);
spin.obj.css('transform', 'rotate(' + spin.degree + 'deg)');
requestAnimFrame(spin_anim);
};
function filter_degree(d) {
while (d<0){
d += 360;
}
return (d%360);
}
function spin_start() {
spin.stop = false;
spin_anim();
spin.rand_speed = Math.random();
$( spin...