(function(exports) {
‘use strict’;
let canvas = document.getElementById(‘timer-canvas’);
let context = canvas.getContext(‘2d’);
let centerX = canvas.width / 2;
let centerY = canvas.height / 2;
let angle = 0;
let animation;
let timeDuration;
function orangeCircle(){
angle += 1;
context.save();
context.strokeStyle = ‘#ff4f1a’;
context.lineWidth = 20;
context.beginPath();
context.lineCap = ‘round’;
context.arc(centerX, centerY, 145 ,
(-Math.PI / 2) - Math.PI * 2 * (angle / 3600 / timeDuration), 1.5 * Math.PI, true);
context.stroke();
context.closePath();
context.restore();
}
function greyCircle(){
context.save();
context.beginPath();
context.strokeStyle = ‘#14141a’;
context.lineWidth = 20;
context.arc(centerX, centerY, 145 , 0, Math.PI * 2, false);
context.stroke();
context.closePath();
context.restore();
}
function text(n){
//内容自定义
//在updateCircle();调用就行
}
function show(duration) {
angle = 0;
timeDuration =duration / 1000 / 60;
context.clearRect(0, 0, canvas.width, canvas.height);
updateCircle();
}
function updateCircle() {
canvas.classList.remove(‘hidden’);
animation = window.requestAnimationFrame(updateCircle, canvas);
context.clearRect(0, 0, canvas.width, canvas.height);
greyCircle();
orangeCircle();
}
function pause() {
window.cancelAnimationFrame(animation);
}
function clear() {
window.cancelAnimationFrame(animation);
context.clearRect(0, 0, canvas.width, canvas.height);
canvas.classList.add(‘hidden’);
}
exports.Progressbar = {
show: show,
pause: pause,
clear: clear,
updateCircle: updateCircle
};
})(window);
//调用 duration为毫秒
Progressbar.show(duration);