在 javascript 中旋转时钟指针
Rotating a clock hand in javascript
我正在学习使用 raphael js 制作时钟,
我正在使用本教程来入门 http://www.tuttoaster.com/creating-a-clock-animation-without-css3/
显示时秒针每秒走不动一秒。我知道一秒钟是 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);
所以你想将时钟速度加快二十?
不太可能,但请尝试将底部的 1000
更改为 50
。因为1000除以20等于50.
试一试,看看是否有效...
hand.rotate(6,200,150);
Bernard,您不需要按变量 angle 旋转,因为无论过去了多少秒,您只需每秒旋转 6 度。
我正在学习使用 raphael js 制作时钟,
我正在使用本教程来入门 http://www.tuttoaster.com/creating-a-clock-animation-without-css3/
显示时秒针每秒走不动一秒。我知道一秒钟是 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);
所以你想将时钟速度加快二十?
不太可能,但请尝试将底部的 1000
更改为 50
。因为1000除以20等于50.
试一试,看看是否有效...
hand.rotate(6,200,150);
Bernard,您不需要按变量 angle 旋转,因为无论过去了多少秒,您只需每秒旋转 6 度。