// 获取canvas及2d上下文
var canvas=document.getElementById("dotCanvas");
var context=canvas.getContext("2d");
// 蓝色圆
context.fillStyle="#39c"; //圆点颜色
context.beginPath(); //路径开始
context.arc(6, 6, 6, 0, 2*Math.PI); //创建圆(x, y, r, sAngle, sAngle)
context.closePath(); //路径关闭
context.fill(); //绘制填充
var step = 4;
// 0.5*Math.PI=从90°开始 1度=Math.PI/180
var dps = -0.5*Math.PI + Math.PI/180*step;
// 1毫秒画一次
var intervalId = setInterval(function(){
drawCircle();
},100);
// 画白圆
function drawCircle(){
// 接近一圈时,重置画布
if (Math.abs(dps-1.5*Math.PI) < 0.000001){
clearInterval(intervalId);
resetCanvas();
spinCanvas();
}
// 白色圆
var canvas=document.getElementById("dotCanvas");
var context=canvas.getContext("2d");
context.fillStyle="#FFF";
context.beginPath();
context.arc(6, 6, 6, -0.5*Math.PI, dps, false); //False = 顺时针,true = 逆时针
context.lineTo(6,6);
context.closePath();
context.fill();
dps += Math.PI/180*step; //每次增加的度数
}
// 转完一圈,继续转
function spinCanvas(){
dps = -0.5*Math.PI+Math.PI/180*step;
clearInterval(intervalId);
var canvas=document.getElementById("dotCanvas");
var context=canvas.getContext("2d");
context.fillStyle="#39c";
context.beginPath();
context.arc(6,6,6,0,2*Math.PI);
context.closePath();
context.fill();
intervalId = setInterval(function(){
drawCircle();
},100);
}
// 重置蓝圆
function resetCanvas(){
var canvas=document.getElementById("dotCanvas");
var context=canvas.getContext("2d");
context.clearRect(0,0,12,12);
context.fillStyle="#39c";
context.beginPath();
context.arc(6,6,6,0,2*Math.PI);
context.lineTo(6,6);
context.closePath();
context.fill();
}
看了,感觉不错,谢谢您提供
赞一个~ 网站很棒~~但是首页右侧建议做个跟随边栏~~~祝越做越好~~
这个在上一版本的主题中有的,但是后来出现了一些小bug就取消了,后面我会加上。谢谢提议
太客气了~~内什么,不知道主题可否发我一份~~先谢谢~