求大神指教,为什么我这个定时器不起作用呢?

来源:4-1 一个实现动画的基础函数

QAQQQQ

2015-12-04 15:47

var WINDOW_WIDTH=400;//画布长度
var WINDOW_HEIGHT=300;//画布高度
var RADIUS=2;//每个数字中小圆点的半径
var MARGIN_LEFT=20;//第一个数字离画布左边的距离
var MARGIN_TOP=30;//第一个数字离画布上边的距离

//截止的日期
const endTime=new Date(2015,11,5,18,47,52);
var curShowTimeSeconds=0;

window.onload=function(){
   var canvas=document.getElementById('canvas');
   //获取画布环境
   var context=canvas.getContext('2d');

   canvas.width=WINDOW_WIDTH;
   canvas.height=WINDOW_HEIGHT;

   curShowTimeSeconds=getCurrentShowTimeSeconds();

   //定时器每隔50毫秒执行一次程序
   setInterval(function(){
       render(context);
       update();
   },50);
}

//获取截止日期到现在日期的差值
function getCurrentShowTimeSeconds(){
   var curTime=new Date();
   var ret=endTime.getTime()-curTime.getTime();//毫秒
   ret=Math.round(ret/1000);//转换成秒

   return ret>=0?ret:0;//若差值大于0则返回,若小于0,则返回0
}

function update(){
  var  nextShowTimeSeconds=getCurrentShowTimeSeconds();
   var nextHours=parseInt(nextShowTimeSeconds/3600);
   var nextMinutes=parseInt((nextShowTimeSeconds-nextHours*3600)/60);
   var nextSeconds=nextShowTimeSeconds%60;

   //截止的小时
   var curHour=parseInt(curShowTimeSeconds/3600);
   //截止的分钟
   var curMinutes=parseInt((curShowTimeSeconds-hour*3600)/60);
   //截止的分钟
   var curSeconds=curShowTimeSeconds%60;

   if(nextSeconds!=curSeconds){
       curShowTimeSeconds=nextShowTimeSeconds;
   }
}

//画出此刻离截止日期的时间
function render(cxt){

   cxt.clearRect(0,0,WINDOW_WIDTH,WINDOW_HEIGHT);
   //截止的小时
   var hour=parseInt(curShowTimeSeconds/3600);
   //截止的分钟
   var minutes=parseInt((curShowTimeSeconds-hour*3600)/60);
   //截止的分钟
   var seconds=curShowTimeSeconds%60;

   renderDigit(MARGIN_LEFT,MARGIN_TOP,parseInt(hour/10),cxt);
   renderDigit(MARGIN_LEFT+15*(RADIUS+1),MARGIN_TOP,parseInt(hour%10),cxt);
   renderDigit(MARGIN_LEFT+30*(RADIUS+1),MARGIN_TOP,10,cxt);
   renderDigit(MARGIN_LEFT+39*(RADIUS+1),MARGIN_TOP,parseInt(minutes/10),cxt);
   renderDigit(MARGIN_LEFT+54*(RADIUS+1),MARGIN_TOP,parseInt(minutes%10),cxt);
   renderDigit(MARGIN_LEFT+69*(RADIUS+1),MARGIN_TOP,10,cxt);
   renderDigit(MARGIN_LEFT+78*(RADIUS+1),MARGIN_TOP,parseInt(seconds/10),cxt);
   renderDigit(MARGIN_LEFT+93*(RADIUS+1),MARGIN_TOP,parseInt(seconds%10),cxt);
}

//画出每个数字
function renderDigit(x,y,num,cxt){

   //圆点的颜色
   cxt.fillStyle="rgb(0,102,153)";
   //对lend1进行遍历,i是每个数字的行数,j是没个数字的列数
   for(var i=0;i<lend1[num].length;i++){
       for(var j=0;j<lend1[num][i].length;j++){
         if(lend1[num][i][j]==1){
             cxt.beginPath();
             cxt.arc(x+j*2*(RADIUS+1)+(RADIUS+1),y+i*2*(RADIUS+1)+(RADIUS+1),RADIUS,0,2*Math.PI);
             cxt.closePath();

             cxt.fill();
         }
       }
   }
}

写回答 关注

1回答

  • 一毛钱
    2015-12-04 15:58:31

    lend1 你这个数组在哪里?

    QAQQQQ

    在另外一个js文件里面,刚刚我已经找到错误了,谢谢你啊

    2015-12-04 16:06:02

    共 1 条回复 >

炫丽的倒计时效果Canvas绘图与动画基础

学习HTML5中最激动人心的技术Canvas,彻底释放自己的创造力

96746 学习 · 1000 问题

查看课程

相似问题