| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- var Progress = function(init){
- this.init(init)
- };
- Progress.prototype= {
- init:function (init) {
- this.el = init.el;//元素ID
- var cvsElement = document.getElementById(this.el),//获取元素
- ctx=cvsElement.getContext("2d"),//获取画笔
- width = cvsElement.width,//元素宽度
- height=cvsElement.height,//元素高度
- degActive=0,//动态线条
- timer=null;//定时器
-
- //停止时的角度
- this.deg = init.deg
- //线宽
- init.lineWidth !== undefined?
- this.lineWidth = init.lineWidth : this.lineWidth =20;
- //判断宽高较小者
- this.wh = width>height?height:width;
- //设置圆的半径,默认为宽高较小者
- init.circleRadius>0&&init.circleRadius<=this.wh/2-this.lineWidth/2?
- this.circleRadius = init.circleRadius:this.circleRadius = this.wh/2-this.lineWidth/2;
- //绘制线的背景颜色
- init.lineBgColor !==undefined?
- this.lineBgColor = init.lineBgColor:this.lineBgColor='#ccc';
- //绘制线的颜色
- init.lineColor !==undefined?
- this.lineColor = init.lineColor:this.lineColor='#009ee5';
- //绘制文字颜色
- init.textColor !==undefined?
- this.textColor = init.textColor:this.textColor='#009ee5';
- //绘制文字大小
- init.fontSize !==undefined?
- this.fontSize = init.fontSize:this.fontSize=parseInt(this.circleRadius/2);
- //执行时间
- this.timer = init.timer;
- //清除锯齿
- if (window.devicePixelRatio) {
- cvsElement.style.width = width + "px";
- cvsElement.style.height = height + "px";
- cvsElement.height = height * window.devicePixelRatio;
- cvsElement.width = width * window.devicePixelRatio;
- ctx.scale(window.devicePixelRatio, window.devicePixelRatio);
- }
- //设置线宽
- ctx.lineWidth=this.lineWidth;
- //启动定时器
- timer = setInterval(function(){
- ctx.clearRect(0,0,width,height);//清除画布
- ctx.beginPath();//开始绘制底圆
- ctx.arc(width/2,height/2,this.circleRadius,1,8);
- ctx.strokeStyle=this.lineBgColor;
- ctx.stroke();
- ctx.beginPath();//开始绘制动态圆
- ctx.arc(width/2,height/2,this.circleRadius,-Math.PI/2,degActive*Math.PI/180-Math.PI/2);
- ctx.strokeStyle=this.lineColor;
- ctx.stroke();
- if(init.deg >= 0){
- var txt=(parseInt(degActive*100/360)+init.currtype);//获取百分比
- ctx.font=this.fontSize+"px SimHei";
- var w=ctx.measureText(txt).width;//获取文本宽度
- var h=this.fontSize/2;
- ctx.fillStyle=this.textColor;
- ctx.fillText(txt,width/2-w/2,height/2+h/2);
- if(degActive>=this.deg/100*360){//停止定时器
- clearInterval(timer);
- timer=null;
- }
- degActive++;
- }else{
- var txt=(init.deg+init.currtype);//获取百分比
- ctx.font=this.fontSize+"px SimHei";
- var w=ctx.measureText(txt).width;//获取文本宽度
- var h=this.fontSize/2;
- ctx.fillStyle=this.textColor;
- ctx.fillText(txt,width/2-w/2,height/2+h/2);
- clearInterval(timer);
- timer=null;
- }
-
- }.bind(this),this.timer);
- }
- };
|