已采纳回答 / 慕工程0708615
得看下你的代码,在draw()函数里面的ctx.restore()之前的函数(drawSecond())里面的开始不需要ctx.save(),后面也不需要ctx.restore(),我的一开始就是因为设置秒针的函数的开头设置了个ctx.save(),右下角四分之一没了,因为你在设置秒针的开头设置一个ctx.save()会导致draw里面的清除函数的画布原点,变成秒针的原点,也就是圆的中心点,今天才刚开始学canvas,也不知道我理解的对不对,反正你可以试试
2017-02-18
谢谢老师的demo。
已上传自己的博客公告栏作为装饰。
http://www.cnblogs.com/lixu880/ 欢迎大家来看,菜鸟一枚
已上传自己的博客公告栏作为装饰。
http://www.cnblogs.com/lixu880/ 欢迎大家来看,菜鸟一枚
2017-02-15
关于 var hourNumbers = [3,4,5,6,7,8,9,10,11,12,1,2] 小时数组为什么从3开始,我和老师有点不一样的意见,我觉得是因为未使用translate设置新的(0,0)时,(0,0)在canvas的左上角,所以它的右下角才为可显示的区域(一般x,y为正数),我们重新设置了(0,0)点之后,还是它的右下角x,y为正数,因此判断0,0点右侧为X轴正数区域,下侧为Y轴正数区域,所以0到90是右下角区域,所以角度才从3的位置开始打开,数组也从3开始。个人愚见,不知道有没有想错
2017-02-09
分针也要跟着秒针的走动来走动的,贴下代码
function drawMinutes(minutes, seconds) {
ctx.save();
ctx.beginPath();
ctx.rotate(2 * Math.PI / 60 * (minutes + seconds / 60));
ctx.lineWidth = 3 * rem;
ctx.lineCap = 'round';
ctx.moveTo(0, 10 * rem);
ctx.lineTo(0, -r + 30 * rem);
ctx.stroke();
ctx.restore();
}
function drawMinutes(minutes, seconds) {
ctx.save();
ctx.beginPath();
ctx.rotate(2 * Math.PI / 60 * (minutes + seconds / 60));
ctx.lineWidth = 3 * rem;
ctx.lineCap = 'round';
ctx.moveTo(0, 10 * rem);
ctx.lineTo(0, -r + 30 * rem);
ctx.stroke();
ctx.restore();
}
2017-02-05