,,JavaScript canvas实现文字时钟

,,JavaScript canvas实现文字时钟

本文主要详细介绍文本时钟的JavaScript canvas实现。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。

本文分享canvas实现文本时钟的具体代码,供大家参考,具体内容如下

先看效果图。

密码

!文档类型html

html lang='en '

meta charset='UTF-8 '

meta name=' viewport ' content=' width=device-width,initial-scale=1.0 '

meta http-equiv=' X-UA-Compatible ' content=' ie=edge '

标题文档/标题

/头

身体

Canvas ID='我的画布' width=' 600' height=' 600 '您的浏览器不支持画布/画布

脚本

var c=document . getelementbyid(' my canvas ');

var CTX=c . get context(' 2d ');

ctx.translate(300,300);

功能时钟(ctx){

this.ctx=ctx//画布2d画笔

this . h=“”;//小时

this . m=“”;//分钟

this . s=“”;//秒

this . year=“”;//年份

this . mon=“”;//月份

this . da=“”;//日期

this . day=“”;//周

this.timer=null//计时器

This.numberText=['零','一','二','三','四','五','六','七','八','九','十','十一','十二','十三','

这个。H=['零','一点','两点','三点','四点','六点','七点','八点','九点','十点','十一点','十二点','

这个。M=['零','一点','二点','三点','四点','五点','六点','七点','八点','九点','十点','十一点','十二点',二十五、二十六、二十七、二十八、二十九、三十一、三十二、三十三、三十四、三十五、三十六、三十七和三十八。四十六、四十七、四十八、四十九、五十、五十一、五十三、五十四、五十五、五十六、五十七、五十八、五十九。

这个。S=['零秒','一秒','两秒','三秒','四秒','五秒','六秒','七秒','八秒','九秒','十秒','十一秒','十二秒',二十五秒,二十六秒,二十七秒,二十八秒,二十九秒,三十秒,三十一秒,三十二秒,三十三秒,三十四秒,三十五秒,三十六秒,三十七秒,三十八秒。46秒,47秒,48秒,49秒,50秒,51秒,52秒,53秒,54秒,55秒,56秒,57秒,58秒,59秒】。

this.draw=function(){

this.ctx.clearRect(-300,-300,600,600);

//中间的黑色小圆圈

this . CTX . begin path();

this.ctx.arc(0,0,5,0,数学。PI*2,真);

this . CTX . fill();

this . CTX . close path();

//画一条长水平线

this . CTX . begin path();

this.ctx.moveTo(0,0);

this.ctx.lineTo(280,0);

this . CTX . stroke style=' # 000 ';

this . CTX . stroke();

this . CTX . begin path();

This.ctx.font='12px微软雅黑';

var year text=“”;

var arr=String(this.year)。拆分(“”);

for(var n=0;narr .长度;n ){

var num=Number(arr[n]);

year text=this . number text[num];

}

var weekday=this.day===0?Sunday ':' week ' this . number ext[this . day];//周

var Motext=this . number text[this . mon]' this . number text[this . da]'日';

this.ctx.fillText(yearText '年',10,-10);//年份的文字

this.ctx.fillText(moText,10,20);//月份/日期/星期的文字

this.ctx.fillText(weekday,10,40);//月份/日期/星期的文字

这个。画时钟();

}

//画刻度

this.drawClock=function(){

//时钟

这个。CTX。save();//保存当前状态

this.ctx.rotate(数学12 ./12 *这个。h);

for(var j=0;j 24j ){

这个。CTX。begin path();

var color=j===this.h?# 000 ':' # CCC ';

这个。CTX。笔画风格=颜色;

this.ctx.font='12px微软雅黑;

this.ctx.strokeText(this .H[j],110,-5);

这个。CTX。关闭路径();

this.ctx.rotate(-Math .PI/12);

}

这个。CTX。restore();//恢复到上一次的状态

//分钟

这个。CTX。save();

this.ctx.rotate(数学100 ./30 *这个。m);

for(var I=0;i 60i ){

这个。CTX。begin path();

var color=i===this.m?# 000 ':' # CCC ';

这个。CTX。笔画风格=颜色;

this.ctx.strokeText(this .M[i],170,-5);

这个。CTX。关闭路径();

this.ctx.rotate(-Math .PI/30);

}

这个。CTX。restore();

//秒钟

这个。CTX。save();

this.ctx.rotate(数学100 ./30 *这个。s);

for(var k=0;k60k ){

这个。CTX。begin path();

var color=k===this.s?# 000 ':' # CCC ';

这个。CTX。笔画风格=颜色;

this.ctx.strokeText(this .S[k],230,-5);

这个。CTX。关闭路径();

this.ctx.rotate(-Math .PI/30);

}

这个。CTX。restore();

//ctx.rotate(-Math ./30 *这个。s);

}

//初始化

this.init=function(){

变那个=这个

这个。timer=setInterval(function(){

那个。settime();

那个。draw();

},100);

}

//停止

this.stop=function(){

清除间隔(这个。定时器);

this.timer=null

}

//设置时间

this.setTime=function(){

var Date=new Date();

这个。年份=日期。get full year();//年,int

这个。mon=日期。获取月份()1;//月分,int

这个。da=日期。getdate();//日期,int

这个。日=日期。getday();//星期,int

var小时=日期。get hours();//时,int

var minu=日期。get minutes();//分,int

变量秒=日期。获取秒数();//秒,int

//毫秒数/1000 ,这里主要是为了做帧动画

var减去cond=日期。get毫秒()/1000;

定义变量秒;//秒,计算秒旋转的角度,浮动

定义变量分钟;//分,计算分钟的角度,浮动

var ho//小时,计算小时的角度,浮动

如果(次0.8){

秒=数学。ceil(秒减秒);

秒=秒=60?0:秒;

}否则{

秒=秒

}

//秒钟到了59,分钟要过渡

if(sec===59) {

if(minuScond=0.8){

分钟=数学。ceil(分减秒);

分钟=分钟=60?0:分钟;

}否则{

分钟=分钟

}

}否则{

分钟=分钟

}

//秒数到了59和分钟数到了59;时针要过渡

如果(秒===59分钟===59){

if(minuScond=0.8){

ho=Math.ceil(小时分秒);

ho=ho=24?0:ho;

}否则{

ho=小时分秒;

}

}否则{

ho=小时;

}

this.h=ho//小时

this.m=分钟;//分钟

this.s=秒;//秒钟

}

}

var时钟=新时钟(CTX);

时钟。init();

/脚本

/body

/html

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: