暴走大熊
2016-04-19 13:55
pop()方法一次只能删除最后一个数组元素,而刷新率是每50ms一次,相当于一秒是刷新20次,也就是说一秒最多只能删除20个小球,但是每一秒产生新的小球数量却大于20,为什么实际上没有积压更多的小球呢,求解!!!
删除的是以整个数组为目标,当满足超出屏幕的小球就会被删除! balls.push(aBall);
//循环小球
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:x+j*2*(cR+1)+(cR+1),
//坐标位置y
y:y+i*2*(cR+1)+(cR+1),
//加速度
g:1.5 + Math.random(),
//x方向速度
vx:Math.pow(-1,Math.ceil(Math.random()*1000)) * 4,
vy:-5,
color:colors[Math.floor(Math.random()*colors.length)]
}
balls.push(aBall);
}
}
}
//在屏幕中小球的数量
var cnt = 0;
for(var i = 0; i < balls.length;i++){
if(balls[i].x + cR > 0 && balls[i].x - cR < window_width){
balls[cnt++] = balls[i];
}
}
//超出屏幕小球的数量
while(balls.length > Math.min(300,cnt)){
balls.pop();
}
其实我觉得直接改变balls的长度会更好!
balls.length = Math.min(300, cnt);
炫丽的倒计时效果Canvas绘图与动画基础
96746 学习 · 1000 问题
相似问题