改了一晚上也不知道哪里错了。。。
var window_width=1024;
var window_height=768;
var radius=8;
var margin_left=30;
var margin_top=60;
const endTime=new Date(2015,6,23,20,0,0);
var curShowTimeSeconds=0;
var balls=[];
const 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_height;
curShowTimeSeconds=getCurrentShowTimeSeconds();
setInterval(
function(){
render( context );
update();
}
,
50
)
};
function getCurrentShowTimeSeconds(){
var cueTime= new Date();
var ret=endTime.getTime() - cueTime.getTime();
ret=Math.round(ret/1000);
return ret >=0 ? ret :0 ;
}
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 ){
if(parseInt(curHours/10)!=parseInt(nextHours/10))
{
addBalls(Margin_left+0,Margin_top,parseInt(curHours/10));
}
if(parseInt(curHours%10)!=parseInt(nextHours%10))
{
addBalls(Margin_left+15*(radius+1),Margin_top,parseInt(curHours/10));
}
if(parseInt(curMinutes/10)!=parseInt(nextMinutes/10)){
addBalls(Margin_left+39*(radius+1),Margin_top,parseInt(curHours/10));
}
if(parseInt(curMinutes%10)!=parseInt(nextMinutes%10)){
addBalls(Margin_left+54*(radius+1),Margin_top,parseInt(curHours%10));
}
if(parseInt(curSeconds/10)!=parseInt(nextSeconds/10)){
addBalls(Margin_left+69*(radius+1),Margin_top,parseInt(curHours/10));
}
if(parseInt(curSeconds%10)!=parseInt(nextSeconds%10)) {
addBalls(Margin_left + 93*(radius+1), Margin_top, parseInt(curHours % 10));
}
curShowTimeSeconds = nextShowTimeSeconds;
}
updateBalls();
}
function updateBalls(){
for( var i = 0 ; i < balls.length ; i ++ ){
balls[i].x += balls[i].vx;
balls[i].y += balls[i].vy;
balls[i].vy += balls[i].g;
if( balls[i].y >= window_height-radius){
balls[i].y = window_height-radius;
balls[i].vy = - balls[i].vy*0.75;
}
}
}
function addBalls(x,y,num) {
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) {
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)]
}
balls.push(aBall)
}
}
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 = parseInt(curShowTimeSeconds - hours * 3600 - minutes * 60);//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(seconds / 10), cxt);
renderDigit(margin_left + 93 * (radius + 1), margin_top, parseInt(seconds % 10), cxt);
for (var i = 0; i < balls.length; i++) {
cxt.fillStyle = balls[i].color;
cxt.beginPath();
cxt.arc(balls[i].x, balls[i].y, radius, 0, 2 * Math.PI, true);
cxt.closePath();
cxt.fill();
}
}
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();
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()
}
}找错误的时候真的是要爆炸了,老师能不能推荐一种好的工具?