/*
* 参数为html文档上画布canvas的id,必须有canvas元素,把canvas的id填入此处,作为参数传入
* write by: zhuxiangfei
* QQ: 1032983642@qq.com
*/
//!!!!"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]