按照老是步骤来为什么我的要一分钟才能更新一次,而且是 分钟数和秒数一起更新

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

haihi

2017-03-09 10:48

下面是我的js 代码:

var WINDOW_WIDTH=1024;

var WINDOW_HEIGHT=768;

var RADIUS=8;

var MARGIN_TOP=60;

var MARGIN_LEFT=30;

const endTime= new Date(2017,2,10,18,10,50);

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();

    // render(context);

    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;

    // console.log(curTime.getTime());

}


function update() {

    var nextShowTimeSeconds= getCurrentShowTimeSeconds();

    var nextHours = parseInt(nextShowTimeSeconds/3600);

    var nextMinutes = parseInt((nextShowTimeSeconds-nextHours*3600)/60);

    var nextSeconds = nextShowTimeSeconds%60;


    var curHours = parseInt(curShowTimeSeconds/3600);

    var curMinutes = parseInt((curShowTimeSeconds-curHours*3600)/60);

    var curSeconds = curShowTimeSeconds%60;


    if (nextSeconds != curSeconds) {

        curShowTimeSeconds = nextShowTimeSeconds;

    }

}


function render(cxt){

    cxt.clearRect(0,0,WINDOW_WIDTH,WINDOW_HEIGHT);//对矩形进行刷新

    

    var hours =parseInt(curShowTimeSeconds/3600);//获得小时数

    var minutes=parseInt((curShowTimeSeconds-hours*3600)/60);//获取分钟数

    var seconds=curShowTimeSeconds%60;//获取秒数


    renderDigit(MARGIN_LEFT,MARGIN_TOP,parseInt(hours/10),cxt);

    renderDigit(MARGIN_LEFT+15*(RADIUS+1),MARGIN_TOP,parseInt(hours%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(minutes/10),cxt);

    renderDigit(MARGIN_LEFT+93*(RADIUS+1),MARGIN_TOP,parseInt(minutes%10),cxt);


}

function renderDigit(x,y,num,cxt) {

    cxt.fillStyle="rgb(0,102,153)";


    for (var i = 0; i < digit[num].length; i++) {

        for (var j = 0; j < digit[num][i].length; j++) {

            if (digit[num][i][j]==1) {

                cxt.beginPath();


                // 圆心位置:

                // CenterX:x+j*2*(R+1)+(R+1)

                // CenterY:y+i*2*(R+1)+(R+1)

                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();

            }

        }

    }

}


写回答 关注

2回答

  • qq_呆橘_5
    2017-05-18 22:51:35

    老哥  哪个参数


  • haihi
    2017-03-09 17:47:42

    找到原因了,参数写错了

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

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

96746 学习 · 1000 问题

查看课程

相似问题