猿问

为什么我没有出现彩色的小球呢,找了一晚上都不知道错误在哪儿

/**
* Created by Administrator on 2015/11/7.
*/
//倒计时时钟的实现
var WINDOW_WIDTH=1024;
var WINDOW_HEIGTH=768;
var RADIUS=7;
var MARGIN_TOP=60;
var MARGIN_LEFT=30;
var ENDTIME=new Date(2015,10,11,21,30,59);//返回指定时间据公元的毫秒,月数从0开始,10表示11月份
var curShowTimeSeconds=0;
var ball=[];
var colors=["#33B5E5","#0099CC","#AA66CC","#9933CC","#99CC00","#669900","#FFBB33","#FF8800","#FF4444","#CC0000"];


window.onload=function(){
   var canvas=document.getElementById("canvas");
   var context=canvas.getContext("2d");

   canvas.width=WINDOW_WIDTH;
   canvas.height=WINDOW_HEIGTH;
   curShowTimeSeconds=getSeconds();
   setInterval(
       function(){
           update(context);//更新显示时间
           render(context);
       },
       50
   )
}

function getSeconds(){
   var now_time=new Date();//获取当前时间
   var cur_time=now_time.getTime();
   var end_time=ENDTIME.getTime();
   var seconds=(end_time-cur_time)/1000;
   return seconds >=0 ? seconds:0;
}


function update(ctx){

   var nextShowTimeSeconds = getSeconds();
   //下一个时间的
   var nextHours = parseInt( nextShowTimeSeconds / 3600);
   var nextMinutes = parseInt( (nextShowTimeSeconds - nextHours * 3600)/60 );
   var nextSeconds = nextShowTimeSeconds % 60;

   var curHours = parseInt( curShowTimeSeconds / 3600);
   if(curHours/10!=nextHours/10){
      
       addBall(MARGIN_LEFT,MARGIN_TOP,parseInt(curHours/10));
   }
   if(curHours%10!=nextHours%10){
       addBall(MARGIN_LEFT+15*(RADIUS+1),MARGIN_TOP,parseInt(curHours%10));
   }
   var curMinutes = parseInt( (curShowTimeSeconds - curHours * 3600)/60 );
   if(curMinutes/10!=nextMinutes/10){
       addBall(MARGIN_LEFT+45*(RADIUS+1),MARGIN_TOP,curMinutes/10);
   }
   if(curMinutes%10!=nextMinutes%10){
       addBall(MARGIN_LEFT+60*(RADIUS+1),MARGIN_TOP,curMinutes%10);
   }
   var curSeconds = curShowTimeSeconds % 60;
   if(curSeconds/10!=nextSeconds/10){
       addBall(MARGIN_LEFT+90*(RADIUS+1),MARGIN_TOP,curSeconds/10);
   }
   if(curSeconds%10!=nextSeconds%10){
       addBall(MARGIN_LEFT+105*(RADIUS+1),MARGIN_TOP,curSeconds%10);
   }
   if( nextSeconds != curSeconds ) {

       curShowTimeSeconds = nextShowTimeSeconds;
   }
   updateBall();
}

function addBall( x , y , num ){
   var num=digit[Math.floor(num)];
   var digit_len=num.length;
   for( var i = 0  ; i < digit_len ; i ++ )
       for( var j = 0  ; j <num[i].length ; j ++ )
           if( num[i][j]==1){
               var aBall = {
                   x:x+j*2*(RADIUS+1)+(RADIUS+1),
                   y:y+i*2*(RADIUS+1)+(RADIUS+1),
                   g:1.5+Math.random(),
                   vx:Math.pow( -1 , Math.ceil( Math.random()*1000 ) ) * 4,
                   vy:-5,
                   color: colors[ Math.floor( Math.random()*colors.length ) ]
               };
               console.log("push ball");
               ball.push( aBall );
           }
}
function updateBall(){
   for(var i=0;i<ball.length;i++){
       ball[i].x=ball[i].x+ball[i].vx;
       ball[i].y=ball.y+ball[i].vy;
       if(ball[i].y>=WINDOW_HEIGTH){
           ball[i].y=WINDOW_HEIGTH-RADIUS;
           ball[i].vy=-ball[i].vy*0.75;
       }
       ball[i].vy=ball[i].vy+ball[i].g;
   }
}
function render(ctx){
   var hours = parseInt( curShowTimeSeconds / 3600);
   var minutes = parseInt( (curShowTimeSeconds - hours * 3600)/60 );
   var seconds = curShowTimeSeconds % 60;

   ctx.clearRect(0,0,WINDOW_WIDTH, WINDOW_HEIGTH);//清屏

   renderdigit(MARGIN_LEFT,MARGIN_TOP,parseInt(hours/10),ctx);
   renderdigit(MARGIN_LEFT+15*(RADIUS+1),MARGIN_TOP,parseInt(hours%10),ctx);

   renderdigit(MARGIN_LEFT+30*(RADIUS+1),MARGIN_TOP,10,ctx);
   renderdigit(MARGIN_LEFT+45*(RADIUS+1),MARGIN_TOP,parseInt(minutes/10),ctx);
   renderdigit(MARGIN_LEFT+60*(RADIUS+1),MARGIN_TOP,parseInt(minutes%10),ctx);

   renderdigit(MARGIN_LEFT+75*(RADIUS+1),MARGIN_TOP,10,ctx);
   renderdigit(MARGIN_LEFT+90*(RADIUS+1),MARGIN_TOP,parseInt(seconds/10),ctx);
   renderdigit(MARGIN_LEFT+105*(RADIUS+1),MARGIN_TOP,parseInt(seconds%10),ctx);

   for( var i = 0 ; i < ball.length ; i ++ ){

       console.log(ball[i].color);
       ctx.beginPath();
       ctx.arc( ball[i].x , ball[i].y , RADIUS , 0 , 2*Math.PI , true );
       ctx.fillStyle=ball[i].color;
       ctx.closePath();
       ctx.fill();
   }

}

function renderdigit(top,left,num,ctx){
   var num=digit[num];
   var digit_len=num.length;
   var digit_0=num[0];

   for(var i=0;i<digit_len;i++){
       for(var j=0;j<num[i].length;j++){
           if(num[i][j]==1){
               ctx.beginPath();
               ctx.fillStyle="#50cfc3";
               ctx.arc(top+j*2*(RADIUS+1)+(RADIUS+1),left+i*2*RADIUS+(RADIUS+1),RADIUS,0,2*Math.PI,false);
               ctx.closePath();
               ctx.fill();
           }
       }
   }
}

Ancess
浏览 1580回答 1
1回答

qq_安伊偌拉_0

看错误提示,没有digit方法
随时随地看视频慕课网APP
我要回答