网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月03日漏签0天
javascript吧 关注:269,262贴子:906,462
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 8回复贴,共1页
<<返回javascript吧
>0< 加载中...

小明学习JavaScript:canvas写的时钟

  • 只看楼主
  • 收藏

  • 回复
  • 明是小明的明
  • while
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
根据JavaScript第15章扩展出来的。做完后,上网看了下别人的作品发现写复杂了,还有代码规范及bug之类的求指正。


  • 明是小明的明
  • while
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//html中 <canvas id="drawing" width="300px" height="300px"></canvas>
function clock(){
var drawing = document.getElementById("drawing");
if(!drawing.getContext){
return false;
}
var context = drawing.getContext("2d");
var PI = Math.PI;
context.clearRect(0,0,300,300); //删除上一个图
context.strokeStyle = "rgba(0,0,0,0)"; //建立透明矩形区
context.strokeRect(0,0,300,300);
context.strokeStyle = "red";
context.shadowOffsetX = 5; //阴影效果
context.shadowOffsetX = 5;
context.shadowBlur = 4;
context.shadowColor = "rgba(0,0,0,0.5)";
context.beginPath();
context.arc(100,100,99,0,2*PI,false);
context.moveTo(194,100);
context.arc(100,100,94,0,2*PI,false);
//生成钟表图形(不含指针)
for(var i=1,j=0,x,y,n=PI/30;i<=60;i++){
context.font = "bold 9px Arial";
context.textAlign = "center";
context.textBaseline = "middle";
x=100+80*Math.sin(n)
y=100-80*Math.cos(n)
if(i % 5 == 0){ //建立数字和小点
j++;
context.fillText(j,x,y);
}else{
if(n < PI/2 + PI/80){
context.moveTo(x,y);
context.lineTo(x+1,y-2);
}else if(n > PI/2 && n < PI + PI/80){
context.moveTo(x,y);
context.lineTo(x+1,y+2);
}else if(n > PI && n < PI*1.5 + PI/80){
context.moveTo(x,y);
context.lineTo(x-1,y+2);
}else{
context.moveTo(x,y);
context.lineTo(x-1,y-2);
}
}
n += (PI/30) - PI/77777; //PI/77777用作修正
}
//生成指针
var rad = PI / 30;
var time = new Date();
var hour = time.getHours();
var hour = hour > 12? hour - 12 : hour;
var hourRad = hour * rad * 5;
var second = time.getSeconds();
var secondRad = second * rad;
var minute = time.getMinutes();
var minuteRad = minute * rad;
//时针
context.translate(100,100);
context.rotate(hourRad);
context.moveTo(0,0);
context.lineTo(0,-40);
//秒针
context.rotate(-hourRad);
context.rotate(minuteRad);
context.moveTo(0,0);
context.lineTo(0,-55);
//分针
context.rotate(-minuteRad);
context.rotate(secondRad);
context.moveTo(0,0);
context.lineTo(0,-65);
context.stroke();
//c初始化坐标和状态
context.rotate(-secondRad);
context.translate(-100,-100);
}
clock();
setInterval(clock,1000);


2025-06-03 23:16:55
广告
  • Inkarnation
  • Boolean
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
简洁又时尚的感觉,佩服楼主,学习ing


  • 冥芽
  • switch
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
@恨宸 出来 为嘛发消息给你 都不甩我


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 8回复贴,共1页
<<返回javascript吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示