canvas绘图, 倒计时特效时钟

/*
* 参数为html文档上画布canvas的id,必须有canvas元素,把canvas的id填入此处,作为参数传入
* write by: zhuxiangfei
* QQ: [email protected]
*/
//!!!!"begin of api"; 和 "end of api" 之间的部分是可以修改的接口,设置countdown=false,始终就只是普通时钟,不倒计时;
//!!!!setDestTime(年,月,日,...)是倒计时结束日期,一定是程序运行时之后的日期才会有效,否则,倒计时就一直停止在00:00:00,因为倒计时已经结束


function clock(canvas_id){
	!function(canvas_id){
	"begin of api";
		var width = 1000;//绘制主要以width为参考来决定弹球半径
		var height = 200;//height只用来计算绘制数字的基线
		var margin_horiz = 150;//水平方向的时钟绘制区域与左右两个边界的保留距离
		var margin_vertic = 50;//暂时不用,只是保留下来
		var gapCalcByRad = 1.0;//数字位之间的间隙
		var median = height / 2;//基线高度
		var ball_radius = (width - 2 * margin_horiz) / (100 + 14.0 * gapCalcByRad);//弹球圆球的半径
		var fillRem = 0.9;//弹球,圆的绘制半径,实际上只填充圆的0.8个半径范围

		var lossFactor = 0.6;//速度的损益因子,每次碰撞后速度为原来的lossFactor倍,保持位正数,切不能大于1
		const deltaTime = 80;//刷新时间, 以毫秒计, 影响帧率

		var countdown_switch = false;//倒计时开关,设置为true表示使用倒计时功能,false时,只作为时钟显示时间
		var destTime = undefined;//用于倒计时的目标时间
		setDestTime(2016, 11, 2, 0, 7, 7);//1-12月,从1开始计数,屏蔽了Date对象的从0开始计数
		//目标时间跟现在的时间的 差值,不暴露,但和destTime放在一起,方便查找
		//当不适用倒计时功能时,设置为现在的时间,绘制钟表
		var diffTime = undefined;//看上面两行注释
		//偏好的颜色预置选项
		const colors = ["#33B5E5","#0099CC","#AA66CC","#9933CC","#99CC00","#669900","#FFBB33","#FF8800","#FF4444","#CC0000"];
		var digit_color = colors[5];//绘制数位的颜色
		//开启
		function start(){
			//定时刷新
			setInterval(function(){
			updateClock();
			updateMarbles();
			addMarbleArray();
			renderClock();
			renderMarbles();
			}, deltaTime);
		};
	"end of api";

	//以下数据不暴露
		const $2PI = 2 * Math.PI;
		var digit =
		    [
		        [
		            [0,0,1,1,1,0,0],
		            [0,1,1,0,1,1,0],
		            [1,1,0,0,0,1,1],
		            [1,1,0,0,0,1,1],
		            [1,1,0,0,0,1,1],
		            [1,1,0,0,0,1,1],
		            [1,1,0,0,0,1,1],
		            [1,1,0,0,0,1,1],
		            [0,1,1,0,1,1,0],
		            [0,0,1,1,1,0,0]
		        ],//0
		        [
		            [0,0,0,1,1,0,0],
		            [0,1,1,1,1,0,0],
		            [0,0,0,1,1,0,0],
		            [0,0,0,1,1,0,0],
		            [0,0,0,1,1,0,0],
		            [0,0,0,1,1,0,0],
		            [0,0,0,1,1,0,0],
		            [0,0,0,1,1,0,0],
		            [0,0,0,1,1,0,0],
		            [1,1,1,1,1,1,1]
		  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值