用javascript旋转时钟指针

Rotating a clock hand in javascript

本文关键字:指针 时钟 旋转 javascript      更新时间:2024-01-22

我正在学习使用raphael js、制作时钟

我用这个教程开始http://www.tuttoaster.com/creating-a-clock-animation-without-css3/

当这种情况发生时,秒针每秒不会移动一秒钟。我知道1秒是6度,但它会移动大约45度!

如果有人能解释一下他做错了什么,以及如何让手以适当的角度旋转,那就太好了。我是一个初学者,所以请说简单的英语:)

代码如下。

window.onload = function(){
var canvas = Raphael("pane",0,0,500,500);
canvas.circle(200,150,100).attr("stroke-width",2);
canvas.circle(200,150,3).attr("fill","#000");
var angleplus = 360,rad = Math.PI / 180,
cx = 200,cy =150 ,r = 90,
startangle = -90,angle=30,x,y, endangle;
 for(i=1;i<13;i++)
 {
     endangle = startangle + angle ;
     x = cx + r  * Math.cos(endangle * rad);
     y = cy + r * Math.sin(endangle * rad);
     canvas.text(x,y,i+"");
      startangle = endangle;
 }
var hand = canvas.path("M200 70L200 150").attr("stroke-width",1);
var minute_hand = canvas.path("M200 100L200 150").attr("stroke-width",2);
var hour_hand = canvas.path("M200 110L200 150").attr("stroke-width",3);
var time = new Date();
angle = time.getSeconds() * 6;
minute_hand.rotate(6 * time.getMinutes(),200,150);
var hr = time.getHours();
if(hr>12)
hr = hr -11;
hour_hand.rotate(30 * hr,200,150);
var minute_angle= 6 + time.getMinutes()*6,hour_angle=0.5+   
      time.getMinutes()*30;
setInterval(function(){
                 angle = angle + 6;
                 if(angle>=360)
                 {
                     angle=0;
                minute_hand.rotate(minute_angle,200,150);
                 minute_angle = minute_angle + 6;
                  hour_hand.rotate(hour_angle,200,150);
                      hour_angle = hour_angle + 0.5;
                 }
                  if(minute_angle>=360)
                  {
                      minute_angle=0;
                  }
                 hand.rotate(angle,200,150);
                 },1000);
hand.rotate(6,200,150);

Bernard,你不需要旋转可变的角度,因为无论经过多少秒,你都只需要每秒旋转6度。

http://jsbin.com/domoqojipe/1/

所以你想把时钟速度提高二十?

这是一个很长的机会,但尝试将底部的1000更改为50。因为1000除以20等于50。

试试看它是否有效。。。